)
使用 jpackage 生成运行时映像,对于windows平台可以直接生成 exe 文件,并附带运行环境,双击即可运行;所有的 jar 被打包为单个 modules 文件,位于生成的最终运行环境文件的 runtime\lib 中;一个简单的 JavaFx 应用打包后不会超过100M。在此过程中会遇到很多不支持模块化(module)的JAR包,这些依赖的包内部没有 module-info.class 文件,我们会搞定它!痛苦过程1:不可避免的会遇到并依赖非模块化的jar包。例如 commons-logging(org.apache.commons.logging),只要使用了apache 的开源包,几乎不可避免的会依赖日志组件。由于许多开源包并未提供模块化支持因此这是绕不开的麻烦;除非不用任何外部依赖。解决办法就是手动为这些依赖包注入 module-info.class 使其成为模块包,首先需要通过 jdeps 命令从 jar 包导出 module-info.java 文件,命令如下示例。jdeps --ignore-missing-deps --multi-release 21 --generate-module-info %OUT% %JAR%%OUT% 输出文件的目录,通常会输出自动包名文件夹内部有 module-info.java%JAR% JAR 的路径和包名,可以使用相对路径获得 module-info.java 文件之后要将其编译为 module-info.class,命令如下所示例。javac -p %DIR%\lib --patch-module org.apache.pdfbox=%JAR% %DIR%\org.apache.pdfbox\versions\21\module-info.java%DIR% 之前的输出文件目录%DIR%\lib 依赖包的目录位置%JAR% JAR 的路径和包名,可以使用相对路径