分布式java应用程序
我最近开发了一些java应用程序,我希望其他人在他们的机器上运行。 我做了一些研究,现在知道要分发java代码,需要创建.jar文件。 我这样做了,但当我分发这些文件时,它在一些计算机上运行,但在其他计算机上,它返回一个错误:“找不到主类”分布式java应用程序,java,Java,我最近开发了一些java应用程序,我希望其他人在他们的机器上运行。 我做了一些研究,现在知道要分发java代码,需要创建.jar文件。 我这样做了,但当我分发这些文件时,它在一些计算机上运行,但在其他计算机上,它返回一个错误:“找不到主类” JRE版本有什么问题吗 用户如何知道应该在哪个版本上运行应用程序 我可以用app/jar文件打包正确的jre版本吗。怎么做 jar文件与jre的其他版本不兼容,除非它们是在其中编译的 选项1:创建一个清单文件,其条目如下,并包含在jar中: Mai
选项1:创建一个清单文件,其条目如下,并包含在jar中:
Main-Class: MainProgram
选项2:只需在运行程序时提及您的Main
类名,例如,如果您的jar
名称为myprogram.jar
且主类为MainProgram
,则按如下方式运行程序:
java -cp myprogram.jar MainProgram
如果您的main程序
接受一些参数,它们也会在命令行中传递这些参数,例如
java -cp myprogram.jar MainProgram argument1 argument2
一些SDK(如Eclipse)具有创建jar文件的功能。
如果您在控制台上工作,这可能会帮助您创建稳定的jar文件:
'jar cfm className.jar MANIFEST.MF className.class'
jar-tfmy_jar.jar
告诉你什么
如果您担心JRE版本,请尝试在javac命令中指定较低的目标版本。为此,您可以将
-target xx
添加到javac
调用中,还可以添加-source xx
。查看javac-help
了解标志的描述。您是如何创建JAR的(哪些选项,以及是否包含一个带有主类的清单)以及您是如何尝试运行该程序的?我在cmd中使用“JAR xyz.JAR manifest.mf*.Class”命令将manifest.mf文件包含在JAR中。我需要它应该运行在任何机器上只要双击它。它运行在一些机器上有jre 7,但在较低的版本,它会给出上述错误。你编译它的JDK版本是什么?+1;好问题。当涉及到软件分发时,尤其是在Java中,您将面临一个普遍的问题。可悲的是,这并不是那么容易解决的。在开发和构建过程中,您可能必须做出(并传达)某些决策(最小/最大JRE版本、JRE供应商、支持的操作系统、双击JAR等操作系统行为)。所有这些因素都会影响构建过程。我要说的是,你只需要解决它——抱歉……除非你有一些特定于JDK7的代码,否则最好使用尽可能低的JDK版本进行编译。然后,任何拥有更高版本JRE的人都可以使用它。好吧,我这样做了,它碰巧在一些机器上运行,但在其他一些机器上,它的JRE版本与它编译的应用程序不一样work@AnirudhChhangani:当它不运行时,你确定得到Main class not found
错误吗?是的,绝对是这样……情况是当我将用户的JRE版本升级到应用程序运行时编译的版本…@anirudhchangangani我敢打赌,它不工作的机器的JRE版本比你编译它的JDK版本旧。最简单的解决方案是为旧版本的Java设置--target标志,这样如果您使用的是ant,那么您的程序就可以在上面运行,然后参考。它的属性为target
。参考这也有目标选项。清单在META-INF中。上面的命令给出了jar文件中所有类的列表。如何在较低版本中编译程序..能否指定命令只需将-target my_version
添加到javac命令中即可。但是,您需要确保不使用任何更新版本的API。请查看javac-help
。当我尝试使用命令“javac-target 1.6 xyz.java”编译它时,返回一个错误,表示目标版本1.6与默认源版本1.7冲突。我该如何纠正这个问题??