java - 用 eclipse 导出的可运行 jar 不起作用,在 eclipse 中它仍然有效

标签 java eclipse jar executable-jar

我正在尝试将 Eclipse 中的 java 项目导出为可运行 jar,但由于某种原因,可运行 jar 不起作用。如果我双击可执行 jar,它不会执行任何操作。我尝试了提取所需的库并将其打包到生成的 jar 中。

所以我也尝试导出一些更简单的项目,效果很好。最大的区别是我的真实项目有文件:图像和xml文件。

在代码中像这样引用它们:

File file = new File("Recources/test.xml");
ImageIcon imageIcon = new ImageIcon("Recources/" + num + ".gif");

该项目的结构如下所示:

enter image description here

但是在可执行 jar 中它们看起来像这样:

enter image description here

感谢您的帮助。

编辑: 我已经尝试过“java -jar filename.jar”,但现在它说找不到我的资源文件夹,而在 eclipse 中它仍然可以找到它。

最佳答案

JAR 文件中的文件与存储在硬盘中的文件不同。如果您将文件包含在 JAR 中,它们将被视为字节流。所以你必须使用不同的方法来访问这些资源。

//To read/access your XML-File
BufferedReader read = new BufferedReader(new InputStreamReader(getClass().getResourceAsStream("/test.xml")));
//To read/access your gif-Files
ImageIcon icon = new ImageIcon(this.getClass().getResource("/"+num+".gif"));

“/”不是文件系统的根文件夹,而是 JAR 内资源的根文件夹。

关于java - 用 eclipse 导出的可运行 jar 不起作用,在 eclipse 中它仍然有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33331397/

相关文章:

Eclipse:如何使用源文件中新添加的方法更新 JUnit 测试文件?

java - 从java执行命令提示符命令来创建jar文件

java - 定期扫描数据库表以查找新行

java - 你如何覆盖 Jackson 2.0 中的空序列化程序?

java - Android 从 JSON 数组添加 ListView 项目

java - 集成外部程序

eclipse - 如何在 Talend Open Studio 中添加 Maven 依赖项

java - 如何在 android 中将 C++ 回调作为按钮的单击处理程序传递?

java - 获取 "Java Heap Space"和 "Out of Memory"时的 Eclipse 内存设置

Web 项目中的 Java EE 模块依赖项?