【问题标题】:Bundle your JavaFX App with a JRE - Mac Edition将您的 JavaFX 应用程序与 JRE 捆绑在一起 - Mac 版
【发布时间】:2015-09-08 16:20:43
【问题描述】:
我在 Netbeans 将 Java 程序打包到本机 Mac 应用程序的方式上遇到了一个重大问题(对于那些不熟悉的人,Netbeans 可以将您的 Jar 文件与 JRE 捆绑在一起,因此您拥有一个完全独立的应用程序。客户端甚至不需要在他们的计算机上安装Java来运行它。整个过程解释得很好here)。
我发现的问题是 Netbeans 生成的应用程序完全忽略了 JavaFX 预加载器。我认为这是因为添加了精简的 JRE。我在网上找不到任何解决方案,想在这里为遇到相同问题的任何人发布一个解决方案。
【问题讨论】:
标签:
macos
netbeans
javafx
bundle
preloader
【解决方案1】:
这是你必须做的:
- 使用上面链接的过程,像往常一样打包应用程序。
- 右击生成的应用,选择Show Package Contents。然后进入Contents文件夹。
- 进入插件文件夹。这包含 JRE。删除它。
- 用存储在您计算机上的副本替换已删除的 JRE。它可以在 Your Hard Drive
- 回到Contents文件夹,进入MacOS文件夹。这包含运行 Jar 文件的 shell。使用文本编辑器打开其中的可执行文件并删除所有内容。将其替换为:
#!/bin/sh
# Constants
APP_JAR="YOURAPP.jar"
APP_NAME="YOURAPP"
VM_ARGS=""
# Set the working directory
DIR=$(cd "$(dirname "$0")"; pwd)
# Set java location
_java="../PlugIns/jdk1.8.0_05.jdk/Contents/Home/bin/java"
# Move to correct directory
cd $DIR
# Run the application
exec $_java $VM_ARGS -Dapple.laf.useScreenMenuBar=true -Dcom.apple.macos.use-file-dialog-packages=true -Xdock:name="$APP_NAME" -Xdock:icon="$DIR/../Resources/ICON.icns" -cp ".;$DIR;" -jar "$DIR/../Java/$APP_JAR"
在上面,将 YOURAPP 替换为您的 jar 文件的名称,jdk1.8.0_05
对于您在第 4 步中添加的任何 Java 版本,ICON 作为您的应用程序图标的名称(如果有的话)。
- 如果您想从标准 Java 徽标更改应用程序的图标,请返回 Contents 并将您自己的 .icns 文件添加到 Resources 文件夹。
你有它!应用程序应按预期运行,预加载器等等。