首页 > 解决方案 > 要求 JRE 在启动 java.exe 时运行 jarfile

问题描述

我正在创建一个与 Discord 的 Rich Presence 兼容的游戏,并且由于 Discord 使用exe文件来启动游戏,当我尝试从 Discord 启动我的游戏时,它会启动java.exe来自 JRE 而不是我游戏的 jarfile 的可执行文件。

我要问的是,有没有办法复制 jre(将其与游戏捆绑)并将其设置为自动启动特定的 jarfile ?如果是,如何?如果不可能,有没有办法从 exe 启动 jar 而无需单独启动 java.exe?谢谢你的帮助。

标签: javajardiscordexe

解决方案


Java 14 包含一个允许这样做的打包工具。还有关于如何做到这一点的教程,例如这里。简而言之,这样的事情应该有效:

jpackage --input target/ \
  --name MyApp \
  --main-jar myApp.jar \
  --main-class com.company.MyApp \
  --type exe \
  --java-options '--enable-preview'

如果您尚未使用 Java 14 而是较旧版本,请查看WinRun4JLaunch4J。两者都允许为 Jar 文件创建 exe 包装器,或者创建一个 exe 文件以及一个 JRE 和一个 jar 文件以独立运行它。这两个仅适用于 Windows,而 Java 打包工具将在各自平台上运行时为每个平台(Windows、macOS、Linux)创建可执行文件(它不支持跨平台,例如在 Windows 上创建 macOS 可执行文件)。

对于 macOS,有一个appbundler可以创建一个包含 JRE 和 jar-File 的 .app,因此用户只需双击应用程序即可启动 java 应用程序。


推荐阅读