我开始使用SWT(eclipse.org/swt)。将我的项目导出到可运行的jar只能通过命令行运行,即java -jar filename.jar
。但是当我双击它时不起作用。但与此同时,我可以双击其他罐子,它们运行得非常好!
这个罐子有什么问题?
答案 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工具-文件类型验证程序。
一旦有了它,您应该能够从命令行重现该错误。这样您可能会有更多输出。