一些jar文件通过双击运行,有些则没有

时间:2012-07-23 21:56:16

标签: java windows eclipse jar swt

我开始使用SWT(eclipse.org/swt)。将我的项目导出到可运行的jar只能通过命令行运行,即java -jar filename.jar。但是当我双击它时不起作用。但与此同时,我可以双击其他罐子,它们运行得非常好! 这个罐子有什么问题?

3 个答案:

答案 0 :(得分:1)

不要在Windows中使用可运行的jar,而要使用launch4j制作一个.exe并运行它。如果遇到问题,请通过单击launch4j中的播放按钮运行.exe,因为launch4j为您提供了一个显示错误消息的控制台。

答案 1 :(得分:0)

java如何知道要运行哪个类,因为.jar文件包含许多.class文件?

答案是你需要一个名为META-INF / MANIFEST.MF的清单文件。将它放入.jar文件的根目录,并添加如下所示的行:

    Main-Class: com.something.MyApp

你只需要一行。您还可以添加其他内容,例如应用程序版本,任何特殊类路径(如果需要)等。检查.jar文件并查看是否存在此文件 - 如果不存在,则必须创建它。

您还可以使用Eclipse向导来帮助您创建MANIFEST.MF文件。只需右键单击您的项目,选择Export | Jar文件,并按照向导页面。使用“下一步”而不是“完成”,因为选择主类的选项位于其中一个非必需页面上。

你说你的MANIFEST.MF有像

这样的行
    Rsrc-Main-Class: Main
    Main-Class: org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader

这意味着当你执行.jar时。它在Eclipse提供的类JarRsrcLoader中查找main()方法。当Eclipse运行时运行.jar时,该类可能在您的路径中。但是如果你停止Eclipse,我认为它不会起作用。

答案 2 :(得分:0)

从命令行使用的Java和通过双击使用的Java可能是2个不同的Java版本。从命令行检查使用哪个版本:java -version。

对于双击时使用的Java,请使用Windows SDK工具-文件类型验证程序。

一旦有了它,您应该能够从命令行重现该错误。这样您可能会有更多输出。