在启动 java.exe 时要求 JRE 运行 一个 jarfile

Asking JRE to run a jarfile on launching the java.exe

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

我想问的是,有什么方法可以复制 jre(将其与游戏捆绑)并将其设置为自动启动特定的 jarfile 吗?如果是,如何? 如果不可能,是否有任何方法可以从 exe 启动 jar 而无需单独启动 java.exe? 感谢您的帮助。

Java14个包含一个packaging tool that allows exactly that. There are also tutorials available on how to do that, e.g. here。简而言之,这样的事情应该有效:

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

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

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