我能够从可执行 jar 成功创建 .exe 文件。从 Launch4j 我可以测试包装器,日志上的输出正是我所期望的。但是,如果我尝试从命令行或 Windows 资源管理器运行 exe,则不会发生任何情况。没有错误,没有按预期输出到控制台。该程序还应该编辑一个文本文件,当我使用批处理文件运行 jar 时,会发生这种情况,但当我运行 exe 时,不会发生这种情况。这些都在同一台计算机上,所以我怀疑这是 JRE 的问题。我广泛搜索了 StackOverflow,但没有发现任何可以帮助解决这种情况的方法。我确实发现这篇文章有类似的问题:Launch4J可执行文件未按预期执行但没有人真正回答这个问题。预先感谢您的帮助
我发现了问题。在标题下,我必须将标题类型从 GUI 切换到控制台。之后我就可以运行exe了。
您可能接受某些内容作为命令行参数,这可能会引发像我这样的错误。
就我而言,这是“单个实例”选项卡上的勾号:仅允许应用程序的单个实例。 虽然我已经杀死了该进程,但由于某种未知的原因,该 exe 被认为是活动的。因此,建议重新启动电脑。
为了让它在 Windows 10 上运行,我必须做这些事情:
首先,确保您创建的可执行 JAR 实际执行。我永远无法通过双击来执行 JAR。相反,我创建了一个
.bat
文件,其中添加了 java -jar
命令行指令来执行 jar,包括 VM 参数。例如,要执行 foo.jar
,.bat
文件应包含 java -jar --module-path %FX_HOME% --add-modules javafx.controls,javafx.fxml foo.jar
。一旦 JAR 正确执行(注意命令提示符窗口),那么您的 JAR 就准备好了。然后,从 Launch4J 应用程序执行以下操作:
where java
并按 ENTER 键进行验证。--module-path %FX_HOME% --add-modules javafx.controls,javafx.fxml
*如果任何路径包含空格,请确保在创建环境变量时将它们放在引号中。例如:C:\Program Files\Java 17 中,应该用引号引起来。这是因为命令行参数是用空格分隔的,而“Program Files”包含空格,使命令行解释器误以为“Program”是一个参数的结尾,而“Files”是另一个参数的开头。通过添加引号,解释器现在知道空格是表示路径的单个参数的一部分。 就我而言,在“选项”部分的“基本”选项卡下,我选中了“启动 GUI 应用程序后保持活动状态”(这不起作用)。