无法从 Java Swing 应用成功创建可执行 jar
Cannot create executable jar from Java Swing app successfully
我制作了一个 Java Swing 应用程序,现在我想将其导出为可执行 jar
文件。我在 Eclipse
中创建了该应用程序,它具有以下结构:
其中文件夹 mysqlconnector
还包含一个 jar
文件。所以首先我尝试按照 this link 中的说明创建 seo.jar
,但是当我尝试通过 java -jar seo.jar
从终端执行它时,我得到一个错误:
Error: Could not find file connectionprops.properties
如截图所示,我尝试将connectionprops.properties
放入main
包中,但同样的问题仍然存在。
然后我尝试制作一个名为 manifest.mf
的 manifest
文件,其内容为:
Main-Class: bin.main.MainClass //also tried Main-Class: MainClass
因为我的项目结构是:
seo --> bin --> main --> MainClass.class
我将 manifest.mf
放在文件夹 seo
中,并在终端中输入以下命令:
jar -cvfm seo.jar manifest.mf *
但是当通过 java -jar seo.jar
从终端执行它时,我再次收到错误消息:
Error: Could not find or load main class bin.main.MainClass
我做错了什么?我应该更改项目结构中的某些内容吗?我的项目中还有其他 jar
文件有问题吗?如何创建可执行文件 jar
并成功执行?
bin.main
不是包名。您不能将此添加到 manifest.mf
.
只有当包中有主要 class 时才应添加包名称。如果你的包裹是默认的,那么只放主要的 class.
Main-Class: MainClass
Manifest Main-Class 属性需要接收 Main class 的包路径。项目的结构是什么样的并不重要,重要的是 src/ 文件夹中的完全限定包名称。所以在这种情况下,main.MainClass 是你应该写的。
此外,如果您在尝试读取程序中的 connectionprops.properties 时收到其他错误,请尝试使用
打开文件
someObject.getClass().getResourceAsStream("connectionprops.properties")
我制作了一个 Java Swing 应用程序,现在我想将其导出为可执行 jar
文件。我在 Eclipse
中创建了该应用程序,它具有以下结构:
其中文件夹 mysqlconnector
还包含一个 jar
文件。所以首先我尝试按照 this link 中的说明创建 seo.jar
,但是当我尝试通过 java -jar seo.jar
从终端执行它时,我得到一个错误:
Error: Could not find file connectionprops.properties
如截图所示,我尝试将connectionprops.properties
放入main
包中,但同样的问题仍然存在。
然后我尝试制作一个名为 manifest.mf
的 manifest
文件,其内容为:
Main-Class: bin.main.MainClass //also tried Main-Class: MainClass
因为我的项目结构是:
seo --> bin --> main --> MainClass.class
我将 manifest.mf
放在文件夹 seo
中,并在终端中输入以下命令:
jar -cvfm seo.jar manifest.mf *
但是当通过 java -jar seo.jar
从终端执行它时,我再次收到错误消息:
Error: Could not find or load main class bin.main.MainClass
我做错了什么?我应该更改项目结构中的某些内容吗?我的项目中还有其他 jar
文件有问题吗?如何创建可执行文件 jar
并成功执行?
bin.main
不是包名。您不能将此添加到 manifest.mf
.
只有当包中有主要 class 时才应添加包名称。如果你的包裹是默认的,那么只放主要的 class.
Main-Class: MainClass
Manifest Main-Class 属性需要接收 Main class 的包路径。项目的结构是什么样的并不重要,重要的是 src/ 文件夹中的完全限定包名称。所以在这种情况下,main.MainClass 是你应该写的。
此外,如果您在尝试读取程序中的 connectionprops.properties 时收到其他错误,请尝试使用
打开文件someObject.getClass().getResourceAsStream("connectionprops.properties")