环境:Win10,Oracle JDK 9,Eclipse,jlink,javapackager
上下文:我正在尝试使用javapackager
生成可执行文件
具有使用jlink
制作的Java自定义运行时映像,并读取javapackager documentation。不可安装。
Jlink创建了一个zip文件,其中包含我封装的所有Java类文件和资源(这意味着我无法从System Explorer访问它们)+自定义jre。它带有一个.bat启动器来运行该应用程序。一切正常。
Walkthrow::1,我发现有一个OpenJDK available from OpenJDK14的jpackage
实用程序可以使Java模块化应用程序可执行,但仍在开发中。我没有找到任何解决办法。
后来我研究了Inno Setup,但是它不能满足我的需求(因为我不想要安装程序)
后来我发现,从Oracle JDK 8开始,有javapackager
工具可以为每个平台(max,linux,windows ..)生成可运行对象。
我无法使javapackager工作。 这是我在Windows cmd上执行的命令的各种尝试之一。
javapackager
-deploy
-native exe
--add-modules myModule,javafx.graphics,javafx.controls
--module-path "C:\path\to\javafx-jmods;C:\path\to\target\classes;C:\path\to\more\jmods"
-outdir "C:\myApp"
-outfile MyApp
-appclass myPackage.MyApp
-name "MyApp"
使用上一条命令,我得到了错误:
Error: No application jars foun
因此,我意识到我正在将-deploy命令及其选项与-createjar命令及其选项混合在一起。
有人可以解释如何使用javapackager生成.exe吗?
编辑1
尝试过jpackage(需要将jdk 14与 Wix安装程序作为依赖项):
jpackage --package-type exe -o outputdir --name myApp --add-modules myapp,javafx.graphics,javafx.controls
--module-path "C:\path\to\some\jmods;C:\path\to\myTarget;C:\path\to\javafx-sdk-11.0.2plugin" -m myapp/App
输出:myApp.1.0.exe。它打开一个cmd和一个“安装程序”,但不执行myApp,因为其中不包含自定义Java运行时环境。
答案 0 :(得分:1)
像其他JDK一样安装jpackage随附的JDK,并将您的JAVA_HOME设置为它。
作为包装的准备工作,我已指示Maven将项目的所有相关jar文件复制到installer / input文件夹中。
然后转到项目的主文件夹并调用
$JAVA_HOME/bin/jpackage \
--name yourAppName \
--output installer/output \
--input installer/input \
--main-jar yourAppMain.jar \
--main-class xxx.yyy.yourAppMainClass
结果现在应该在安装程序/输出文件夹中。
有关您可以调用的选项的更多详细信息
$JAVA_HOME/bin/jpackage --help
还有一个选项,可以将其他JDK与jpackager一起使用,但这是更高级的。
答案 1 :(得分:0)
如果您的项目是使用Gradle构建的,则可以轻松使用Badass jlink插件:https://github.com/beryx/badass-jlink-plugin 使用jpackage构建安装程序/软件包
关于如何使用OpenJDK 11以及将OpenJDK 14和jpackage一起使用来构建应用程序映像,这仅是为了构建安装程序/软件包: https://walczak.it/blog/distributing-javafx-desktop-applications-without-requiring-jvm-using-jlink-and-jpackage