在提问之前,我已经进行了搜索,但是那些技巧都没有奏效。我尝试将图像放在包的下面,但是也失败了。那么我该如何成功地从Eclipse导出包含图像的jar文件呢?
在提问之前,我已经进行了搜索,但是那些技巧都没有奏效。我尝试将图像放在包的下面,但是也失败了。那么我该如何成功地从Eclipse导出包含图像的jar文件呢?
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"))即可。
src (source directory)
^-------------------com.myproject
^................ Main.java
resource (source directory)
^-------------------com.myproject
^................ logo.png
然后尝试将这个项目导出为jar文件。
File
> New
> Java Project
Project layout
> Configure default...
将源文件夹名称更改为src/main/java
,这是gradle和maven等工具遵循的惯例,因此大多数开源项目都采用这种惯例。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)完成的方式。