繁体   English   中英

Eclipse导出的Runnable JAR不显示图像

[英]Eclipse exported Runnable JAR not showing images

运行从Eclipse导出的JAR文件时,不会加载我的图像。

我将图像放在资源类包中。 我也尝试过图像源文件夹,但是没有运气。

从Eclipse加载时完美工作。 图像位于导出的JAR文件中,因此可以正常导出。

我试过了:

label.setIcon(new ImageIcon(MainFrame.class.getResource("/resources/header.jpg")));

我也尝试过:

URL url = getClass().getResource("/resources/header.jpg");
Image image = Toolkit.getDefaultToolkit().getImage(url);
label.setIcon(new ImageIcon(image));

和:

try
{
    label.setIcon(new  ImageIcon(ImageIO.read(getClass().getResource("/resources/header.jpg"))));
}
catch (IOException e1)
{
    e1.printStackTrace();
}

有什么建议么?

对我来说很好。 检查您可能有什么不同。

实施例1:( SRC资源)

脚步:

  1. 档案结构

    在此处输入图片说明

  2.  package com.stackoverflow.test; import java.net.URL; import javax.swing.*; // Wild carded for brevity. // Actual code imports single classes public class Main { public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable(){ public void run() { URL url = Main.class.getResource( "/resources/stackoverflow.png"); ImageIcon icon = new ImageIcon(url); JFrame frame = new JFrame(); frame.add(new JLabel(icon)); frame.pack(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setLocationRelativeTo(null); frame.setVisible(true); } }); } } 
  3. [右键单击项目]→[导出]→[可运行的Jar文件]→[设置启动配置]

    在此处输入图片说明

  4. 利润

    在此处输入图片说明

仅供参考,相同的设置在Eclipse中运行也很好


示例2 :(资源不在 src中-而是在项目中)

脚步:

  1. 文件结构(通知资源看起来像一个普通文件夹)

    在此处输入图片说明

  2. 我们现在要做的就是将资源放在构建路径上。 这是将所有内容放入类路径中的文件夹(不包括文件夹本身)中

    • 右键单击该项目,然后转到[构建路径]→[配置构建路径]

      在此处输入图片说明

    • 从对话框的[源]选项卡中,选择[添加文件夹],然后在新对话框中,选择[资源]文件夹

      在此处输入图片说明

    • 现在资源文件夹的内容在构建路径中(注意现在文件夹中的小包

      在此处输入图片说明

  3. 新代码不再使用资源前缀作为路径

     URL url = Main.class.getResource("/stackoverflow.png"); 
  4. 从上面与第3步和第4步相同,并获利!


更新

设置启动配置

通常,一旦您运行了该类(即右键单击该类并以Java应用程序身份运行),便会设置运行配置。 您需要将其设置为清单中的启动点。 但是,这是手动操作的方法。

脚步:

  1. [右键单击项目]→[属性]→[运行/调试设置]

    在此处输入图片说明 您可以看到我已经有了一个运行配置(从简单运行该类隐式设置)。 但是要创建一个新的,请选择[New]→[Java Application]

  2. 为运行配置创建一个名称,然后浏览或键入一个主启动类。 就我而言,它是com.stackoverflow.test.Main

    在此处输入图片说明

  3. 现在,如上例所示导出时,选择运行配置

    在此处输入图片说明

  4. 像上面一样运行jar。


编辑

检查结果

表现:

Manifest-Version: 1.0
Rsrc-Class-Path: ./
Class-Path: .
Rsrc-Main-Class: com.stackoverflow.test.Main
Main-Class: org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader

提取的罐子:

在此处输入图片说明

我发现当您更改时:

将所需的库打包到生成的jar中

将所需的库提取到生成的jar中

在“设置启动”配置中对我有用。

提取所需的库按钮

要从Eclipse创建可运行的JAR文件,我们可以参考文章“在Eclipse中创建可运行的Jar(或其他IDE或手动创建):”( https://www.cefns.nau.edu/~edo/Classes /CS477_WWW/Docs/RunnableJarsinEclipse.html ),它提到我们需要做四件事:

  1. 确保为我们的代码创建一个包,而不仅仅是在Eclipse中创建一个项目
  2. 在代码的主包下为资源文件创建子包(子文件夹)(请注意,子包位于主包下,不仅在项目中)
  3. 从getResource()获取所有文件引用(获取URL引用)
  4. 在Eclipse中将文件导出为可运行的JAR(文件->导出...->选择可运行的JAR文件->下一步-> ...)

但是对于上述文章的示例代码中的图像文件,它仅创建ImageIcon,而不创建SWT图像,并且互联网上存在许多有关如何从URL获取SWT图像或如何将ImageIcon转换为SWT图像的问题,以下是用于从URL获取SWT图片的示例代码,

Image imgSWT=null;  // Image class is the SWT Image class
ImageDescriptor imgDesc=null;
java.net.URL imgURL = YourClassName.class.getResource("path/image_filename");

if (imgURL != null) {
    imgDesc = ImageDescriptor.createFromURL(imgURL);
    imgSWT = imgDesc.createImage();
}

两个简单步骤:

1-将文件夹添加到构建路径;

2-使用此:

    InputStream url = this.getClass().getResourceAsStream("/load04.gif");
    myImageView.setImage(new Image(url));

我有同样的问题..您可以使用此..

Image Icon= new ImageIcon(new WE4().getClass().getResource("IC.jpg"))

WE4是我的类构造函数名称。 希望能帮助到你。

问题是我的Windows配置文件中有这个项目……它带有“!” 在其中...(DeNitE!->是我的Windows配置文件的名称)

我将其更改为DeNitE(不带!)后,它就可以正常工作...

除非必须将文件保存在jar中,否则这可能是最简单的方法:

header = ImageIO.read(new File("./resources/header.jpeg"));

标头必须是Image / BufferedImage。 这将转到可运行jar所在的文件夹,并寻找一个名为resources的文件夹。 http://i.stack.imgur.com/x8xtO.png

另一个解决方法是,如果将资源文件(.jar文件)放在相同的位置,则它应该可以工作。 唯一的缺点是您必须始终将资源与jar文件一起使用。

如果那不是问题,您可以通过这种方式进行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM