我在询问之前进行了搜索,但这些技术都没有奏效。我试图将图像放在包装下,这也失败了。那么如何从Eclipse中成功导出包含图像的jar文件?
答案 0 :(得分:1)
MAVEN是我的建议
如果您遵循标准的Maven项目目录结构,那么最好将所有非Java资源放在src / main / resources下。例如,您可以创建子目录图像,以便完整路径为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"))即可。
答案 1 :(得分:0)
在Eclipse中:您可以将图像文件与Java源代码文件一起放置,如果您将其放在其他目录中,请确保将该目录创建为src目录。并创建与源代码包相同的包,并将图像文件复制到那些创建的包。
例如:
src (source directory)
^-------------------com.myproject
^................ Main.java
resource (source directory)
^-------------------com.myproject
^................ logo.png
然后尝试将此项目导出为jar文件。
答案 2 :(得分:0)
您需要将图像放在源文件夹中,并确保该文件夹的设置不会排除您尝试导出的内容。
尝试设置一个干净的Java项目,以确保它与您的eclipse版本一样正常工作,以查看可能缺少的内容。使用项目对话框按照这些说明创建一个新项目:
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)的工作方式。