用 eclipse 导出的可运行 jar 不起作用,在 eclipse 中它仍然有效
Runnable jar exported with eclipse isn't working, in eclipse it still works
我正在尝试将 eclipse 中的 java 项目导出为可运行的 jar,但由于某种原因,可运行的 jar 不起作用。如果我双击可执行 jar,它不会执行任何操作。我尝试将所需的库提取和打包到生成的 jar 中。
所以我也尝试导出一些更简单的项目,那些工作得很好。最大的区别是我的真实项目有文件:图像和 xml 文件。
在代码中这样引用它们:
File file = new File("Recources/test.xml");
ImageIcon imageIcon = new ImageIcon("Recources/" + num + ".gif");
项目的结构如下所示:
但在可执行 jar 中它们看起来像这样:
感谢您的帮助。
编辑:
我已经试过了 'java -jar filename.jar',但是现在它说找不到我的资源文件夹,而在 eclipse 中它仍然可以找到它。
问题可能是 Java 不是 运行 jar 的默认程序。
尝试 right click -> Open with
和 select Java 运行时,它应该 运行 成功。
将其设为启用双击的默认程序运行ning。
Right click -> Properties -> Change -> C:\Program Files\Java\jre7\bin\javaw.exe
灵感来自 stratwine 在
的回答
谢谢大家,但问题似乎不仅仅出在导出上。当我用 cmd 打开我的程序时看到一个错误,我使用文件名打开 xml 和图像,而我应该使用 inputStreams: https://docs.oracle.com/javase/tutorial/networking/urls/readingURL.html。
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 中资源的根文件夹。
我正在尝试将 eclipse 中的 java 项目导出为可运行的 jar,但由于某种原因,可运行的 jar 不起作用。如果我双击可执行 jar,它不会执行任何操作。我尝试将所需的库提取和打包到生成的 jar 中。
所以我也尝试导出一些更简单的项目,那些工作得很好。最大的区别是我的真实项目有文件:图像和 xml 文件。
在代码中这样引用它们:
File file = new File("Recources/test.xml");
ImageIcon imageIcon = new ImageIcon("Recources/" + num + ".gif");
项目的结构如下所示:
但在可执行 jar 中它们看起来像这样:
感谢您的帮助。
编辑: 我已经试过了 'java -jar filename.jar',但是现在它说找不到我的资源文件夹,而在 eclipse 中它仍然可以找到它。
问题可能是 Java 不是 运行 jar 的默认程序。
尝试 right click -> Open with
和 select Java 运行时,它应该 运行 成功。
将其设为启用双击的默认程序运行ning。
Right click -> Properties -> Change -> C:\Program Files\Java\jre7\bin\javaw.exe
灵感来自 stratwine 在
的回答谢谢大家,但问题似乎不仅仅出在导出上。当我用 cmd 打开我的程序时看到一个错误,我使用文件名打开 xml 和图像,而我应该使用 inputStreams: https://docs.oracle.com/javase/tutorial/networking/urls/readingURL.html。
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 中资源的根文件夹。