java - 要求 JRE 在启动 java.exe 时运行 jarfile
问题描述
我正在创建一个与 Discord 的 Rich Presence 兼容的游戏,并且由于 Discord 使用exe
文件来启动游戏,当我尝试从 Discord 启动我的游戏时,它会启动java.exe
来自 JRE 而不是我游戏的 jarfile 的可执行文件。
我要问的是,有没有办法复制 jre(将其与游戏捆绑)并将其设置为自动启动特定的 jarfile ?如果是,如何?如果不可能,有没有办法从 exe 启动 jar 而无需单独启动 java.exe?谢谢你的帮助。
- 抱歉英语不好,我是法国人
解决方案
Java 14 包含一个允许这样做的打包工具。还有关于如何做到这一点的教程,例如这里。简而言之,这样的事情应该有效:
jpackage --input target/ \
--name MyApp \
--main-jar myApp.jar \
--main-class com.company.MyApp \
--type exe \
--java-options '--enable-preview'
如果您尚未使用 Java 14 而是较旧版本,请查看WinRun4J或Launch4J。两者都允许为 Jar 文件创建 exe 包装器,或者创建一个 exe 文件以及一个 JRE 和一个 jar 文件以独立运行它。这两个仅适用于 Windows,而 Java 打包工具将在各自平台上运行时为每个平台(Windows、macOS、Linux)创建可执行文件(它不支持跨平台,例如在 Windows 上创建 macOS 可执行文件)。
对于 macOS,有一个appbundler可以创建一个包含 JRE 和 jar-File 的 .app,因此用户只需双击应用程序即可启动 java 应用程序。
推荐阅读
- node.js - 为什么 API 返回 400 HTTP 状态码时 NodeJS 会崩溃?
- phpstorm - PhpStorm 2021.1 无法使用 SFTP 连接到部署服务器,但其他客户端可以
- php - php ajax插入显示空白响应但没有错误
- laravel - 如何在laravel中大摇大摆地制作对象?
- nattable - 调整 Nattable 中的列宽 - 选择时显示完整的列名
- json - Firebase JSON 导入错误:密钥无效。我该如何解决?
- flutter - 将项目添加到列表后,Flutter 提供程序返回空列表
- javascript - 为什么我的音频没有在 Table TD 内播放?
- python - 有没有办法使用 TestProject.io 代理运行我自己的编码测试?
- javascript - 用于检索要在 Google Sheet 数组中设置的 Google Drive 文档超链接的 Google 脚本