我最近开发了一些我希望其他人在他们的机器上运行的 java 应用程序。我做了一些研究,现在知道要分发 java 代码,您需要创建 .jar 文件。好吧,我做到了,但是当我分发这些文件时,它在某些计算机上运行,但在其他计算机上返回错误消息:“找不到主类”。
- JRE版本有问题吗?
- 用户如何知道他/她应该在哪个版本上运行应用程序。
- 我可以用我的 app/jar 文件打包正确的 jre 版本吗?如何??
- jar 文件是否与其他版本的 jre 不兼容,除非它们在其中编译。
我最近开发了一些我希望其他人在他们的机器上运行的 java 应用程序。我做了一些研究,现在知道要分发 java 代码,您需要创建 .jar 文件。好吧,我做到了,但是当我分发这些文件时,它在某些计算机上运行,但在其他计算机上返回错误消息:“找不到主类”。
选项1:创建一个清单文件,其条目如下并包含在jar中:
Main-Class: MainProgram
选项2:只需Main
在运行程序时提及您的类名,例如,如果您的jar
名字是myprogram.jar
并且主类是MainProgram
然后运行程序如下:
java -cp myprogram.jar MainProgram
如果您MainProgram
接受一些参数,它们也会在命令行中传递它们,例如
java -cp myprogram.jar MainProgram argument1 argument2
一些 SDK(如 Eclipse)具有创建 jar 文件的功能。如果您使用控制台,这可能会帮助您创建稳定的 jar 文件:
'jar cfm className.jar MANIFEST.MF className.class'
The error message indicates that the JRE can't find your main class. From the comments it looks like you did not specify the manifest correctly. Is it contained inside a META-INF directory inside the jar? What does jar -tf my_jar.jar
tell you?
If you're worried about JRE versions, try specifying a lower target version in your javac command. You do this by adding -target xx
to your javac
invocation and possibly also -source xx
. Have a look at javac -help
for a description of the flags.