Java 在jar文件中显示图像
我知道以前有人问过这个问题,但我已经把我能找到的所有解决方案都检查了一遍,没有一个对我有用。我在Eclipse中有一个程序,我正试图将它导出到一个可执行的jar文件中。这是我第一次这样做。当我执行jar时,我的程序图像不会显示。所以我做了一些研究,发现我需要将它们作为资源加载,但我似乎无法使其工作 下面是我用来加载没有jar的图像的代码:Java 在jar文件中显示图像,java,eclipse,jar,resources,Java,Eclipse,Jar,Resources,我知道以前有人问过这个问题,但我已经把我能找到的所有解决方案都检查了一遍,没有一个对我有用。我在Eclipse中有一个程序,我正试图将它导出到一个可执行的jar文件中。这是我第一次这样做。当我执行jar时,我的程序图像不会显示。所以我做了一些研究,发现我需要将它们作为资源加载,但我似乎无法使其工作 下面是我用来加载没有jar的图像的代码: private void initComponents() { // create an enterprise icon and make it i
private void initComponents()
{
// create an enterprise icon and make it invisible
enterpriseIcon = new JLabel(new ImageIcon("res/enterprise1.png"));
enterpriseIcon.setVisible(false);
}
我将所有图像都放在根项目目录中名为res的文件夹中,我告诉Eclipse将此文件夹放在构建路径中
当运行jar文件时图像无法显示时,我尝试了以下方法:
enterpriseIcon = new JLabel(new ImageIcon(getClass().getResource("/res/enterprise1.png")));
及
然而,当其中任何一个在Eclipse中运行时,我会得到一个空指针异常。(我还尝试了其他一些方法,但以上是我认为我理解的唯一解决方案。)
如果您能帮助实现此功能,我们将不胜感激。使用Class\getResource
获取jar文件中的图像URL
enterpriseIcon = new JLabel(new ImageIcon(getClass().getResource("/res/enterprise1.png")));
试试这个。这对我很有效:)
直到昨天,我还面临着同样的问题。我有办法解决这个问题。让我和你分享
- 在Eclipse中,转到项目名称李>
- 正确的项目名称
- 新建->源文件/文件夹
- 将此源文件/文件夹命名为图像
- 现在,在本地计算机上转到Eclipse工作区,您的项目将在该工作区中运行 他亲自在场李>
- 将所有图像复制到新创建的 “图像”文件夹仅在此处
- 现在回到Eclipse李>
- 右键单击项目->刷新
- 现在,无论您在哪里使用.java文件中的图像,请转到这些行,并在图像位置前面加上图像前缀/
如果对您有效,请投票: 请尝试使用getClass().getResource(“/res/enterprise1.png”),很抱歉,我没有使用它,但这实际上是我第一次尝试的。我更正了我的帖子,把它包括进去。你试过路径“rez/enterprise1.png”吗?您确定I age存在于jar中并且路径正确吗?看起来带图像的/res文件夹不在jar中。我确实告诉Eclipse将此文件夹用作源文件夹。我如何让它放在罐子里?我有类似的问题,最终用
getresourceastream
而不是getResource
解决了它。对不起,我也试过了。这应该是我文章中第一个失败代码的例子,但我复制并粘贴了错误的东西。无论如何,它给了我同样的空指针异常。我将更正我的帖子。@user2765703验证图像是否在jar中。如果在指定的路径上找不到任何内容,该方法将返回null
。你可以尝试一些变化,比如删除前面的/
,但我认为这不应该奏效。我发现,如果我将图像放在主项目的/bin文件夹中,并将代码更改为enterpriseecon=new JLabel(new-ImageIcon(getClass().getResource(“enterprise1.png”);但是,如果可能的话,我希望能够使用我的/res文件夹。我确实告诉Eclipse将其放在构建路径上。我还缺什么吗?试试这个。实际上,如果您已将res
文件夹声明为源文件夹,那么您应该可以只说enterprise1.png
或其他内容。
enterpriseIcon = new JLabel(new ImageIcon(getClass().getResource("/res/enterprise1.png")));
private void initComponents() {
try {
BufferedImage icon = ImageIO.read(getClass().getResource("/enterprise1.png"));
frame.setIconImage(icon);
} catch (IOException e) {
e.printStackTrace();
}
}