[英]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();
}
有什么建议么?
对我来说很好。 检查您可能有什么不同。
脚步:
档案结构
码
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); } }); } }
[右键单击项目]→[导出]→[可运行的Jar文件]→[设置启动配置]
利润
仅供参考,相同的设置在Eclipse中运行也很好
脚步:
文件结构(通知资源看起来像一个普通文件夹)
我们现在要做的就是将资源放在构建路径上。 这是将所有内容放入类路径中的文件夹(不包括文件夹本身)中
右键单击该项目,然后转到[构建路径]→[配置构建路径]
从对话框的[源]选项卡中,选择[添加文件夹],然后在新对话框中,选择[资源]文件夹
现在资源文件夹的内容在构建路径中(注意现在文件夹中的小包
新代码不再使用资源前缀作为路径
URL url = Main.class.getResource("/stackoverflow.png");
从上面与第3步和第4步相同,并获利!
更新
通常,一旦您运行了该类(即右键单击该类并以Java应用程序身份运行),便会设置运行配置。 您需要将其设置为清单中的启动点。 但是,这是手动操作的方法。
脚步:
[右键单击项目]→[属性]→[运行/调试设置]
您可以看到我已经有了一个运行配置(从简单运行该类隐式设置)。 但是要创建一个新的,请选择[New]→[Java Application]
为运行配置创建一个名称,然后浏览或键入一个主启动类。 就我而言,它是com.stackoverflow.test.Main
类
现在,如上例所示导出时,选择运行配置
像上面一样运行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
提取的罐子:
要从Eclipse创建可运行的JAR文件,我们可以参考文章“在Eclipse中创建可运行的Jar(或其他IDE或手动创建):”( https://www.cefns.nau.edu/~edo/Classes /CS477_WWW/Docs/RunnableJarsinEclipse.html ),它提到我们需要做四件事:
但是对于上述文章的示例代码中的图像文件,它仅创建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.