我最近开发了一些Java应用程序,希望其他人能在他们的计算机上运行。我做了一些研究,现在知道要分发Java代码,需要创建.jar文件。我已经这样做了,但是当我分发这些文件时,它在一些计算机上运行,但在其他计算机上返回一个错误,显示“找不到主类”。
- JRE版本是否有问题?
- 用户如何知道应该在哪个版本上运行应用程序?
- 我可以将正确的JRE版本与我的应用程序/JAR文件打包吗?如何操作?
- JAR文件是否与编译时使用的JRE版本之外的其他版本不兼容?
我最近开发了一些Java应用程序,希望其他人能在他们的计算机上运行。我做了一些研究,现在知道要分发Java代码,需要创建.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'
错误消息表明JRE找不到您的主类。从注释中看来,您没有正确指定清单。它是否包含在jar文件内的META-INF目录中?jar -tf my_jar.jar
告诉您什么?
如果您担心JRE版本,请尝试在javac命令中指定较低的目标版本。您可以通过在javac
调用中添加-target xx
和可能还有-source xx
来实现此目的。请查看javac -help
以获取有关标志的描述。
-target my_version
添加到您的 javac 命令中即可。但是,您需要确保不使用来自更新版本的任何 API。 - jackrabbitjavac -help
。 - jackrabbit