如何将带有图片的Java项目从Eclipse导出为Jar文件

3

在提问之前,我已经进行了搜索,但是那些技巧都没有奏效。我尝试将图像放在包的下面,但是也失败了。那么我该如何成功地从Eclipse导出包含图像的jar文件呢?


导出自什么?不同的IDE有不同的使用方式,即使是在IDE中,我也会使用命令行构建工具来生成IDE项目文件以脚本化诸如导出等操作,因此您需要解释您的工具。 - simbo1905
那些技术是哪些? - Fildor
你说的“失败”是什么意思?图片不在jar包中还是尽管它们存在但你收到了“文件未找到异常”的错误信息? - Alaychem goes to Codidact
我认为将图像放入包中是最好的方法。所有内容都将打包并从您的jar文件中加载。使用getResource()来加载图像。 - dneranjan
@simbo1905 从Eclipse导出。 - Zoe
3个回答

1

MAVEN 是我的建议

如果你遵循标准的 Maven 项目目录结构,那么最好将所有非 Java 资源放在 src/main/resources 下。例如,你可以创建一个子目录 images,完整路径为 src/main/resources/images。此目录将包含所有应用程序图像。

在打包应用程序时,应特别注意正确访问图像。例如,以下函数应该做到你所需的一切。

public static Image getImage(final String pathAndFileName) {
    final URL url = Thread.currentThread().getContextClassLoader().getResource(pathAndFileName);
    return Toolkit.getDefaultToolkit().getImage(url);
}

这个函数可以用作getImage("images/some-image.png"),以便在图像目录中加载some-image.png文件。

如果需要ImageIcon,则只需调用new ImageIcon(getImage("images/some-image.png"))即可。


你的意思是写一个单独的方法来获取我需要的图片吗? - Zoe
我尝试了导出带有图片的文件,但是当我运行它时仍然没有显示任何图片。 - Zoe

0
在Eclipse中:您可以将图像文件与Java源代码文件放置在一起,如果您将其放置在其他目录中,则请确保创建该目录作为src目录。并创建与源代码包相同的包,并将图像文件复制到这些创建的包中。
例如:
  src (source directory)
       ^-------------------com.myproject
                                ^................ Main.java
  resource (source directory)
       ^-------------------com.myproject
                                ^................ logo.png

然后尝试将这个项目导出为jar文件。


不行,这个不起作用 :( 这个 Jar 文件确实有图片,但是当我双击时图片就是不会出现。 - Zoe
双击JAR文件中的图像是什么意思?您可能正在Java应用程序中错误地读取图像。 - brb tea

0
你需要把图片放到一个源文件夹中,并确保该文件夹的设置不排除你尝试导出的内容。
尝试建立一个干净的Java项目,以确保它与你的Eclipse版本正常工作,看看可能缺少什么。按照以下说明使用项目对话框创建一个新项目:
  1. File > New > Java Project
  2. 在第一个对话步骤中,选择Project layout > Configure default...将源文件夹名称更改为src/main/java,这是gradle和maven等工具遵循的惯例,因此大多数开源项目都采用这种惯例。
  3. 第二个对话步骤中,选择Create new source folder并将其命名为src/main/resources,这也是标准命名。
创建新项目并将图像拖放到src/main/resources内,例如test.jpg,然后添加一个Java类:
public class Test {
    public static void main(String[] args) throws Exception {
        System.out.println(Test.class.getClassLoader().getResourceAsStream("test.jpg").available());
    }
}

在eclipse中运行它,以检查它是否给出了图像文件大小。然后执行File > export > JAR file并将其导出为/tmp/test.jar,最后使用java -cp /tmp/test.jar来运行它并查看输出结果。

这对我来说都可以工作。请回到项目设置并将其与您正在尝试设置的设置进行比较。请注意,由于文件名而导出/排除文件的选项,因此可能是您具有导出过滤器,该过滤器会阻止导出您的文件。 我的建议是将所有代码放在src/main/java下,将所有资源(如图像和配置文件)放在src/main/resources下,然后没有任何导出过滤器,这是构建工具(如maven和gradle)完成的方式。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接