2

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

4

3 回答 3

1

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

于 2020-07-15T11:05:59.343 回答
0

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

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

    Main-Class: com.something.MyApp

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

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

你说你的 MANIFEST.MF 有这样的行

    Rsrc-Main-Class: Main
    Main-Class: org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader

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

于 2012-07-24T02:21:38.483 回答
0

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

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

一旦你有了它,你应该能够从命令行重现错误。那你可能有更多的输出。

于 2020-07-13T14:02:58.357 回答