如何在Windows上部署JavaFX镜像包,避免根目录存在大量DLL文件
可以移除根目录的DLL文件,并且很容易实现!
我之前也遇到过这个问题——JDK 8的javapackager默认会把JRE所有依赖的DLL都堆在应用根目录,确实让用户很难快速找到可执行文件。好在我们可以通过参数调整打包结构,让根目录变得干净,和Oracle文档里展示的结构一致。
解决方法:指定Runtime子目录
你只需要在javapackager的-deploy命令中添加-BruntimeDir=runtime参数,就能把所有JRE相关的文件(包括那50多个DLL)统一放到一个名为runtime的子目录里,根目录只会留下可执行文件、配置文件等少量必要文件。
修改后的完整-deploy命令如下:
javapackager -deploy -native image -srcfiles out/outjar.jar -appclass helloworld.HelloWorld -outdir out -outfile test -BruntimeDir=runtime
原理说明
默认打包时,javapackager会把自包含应用所需的JRE运行时文件直接解压到根目录,这就是根目录出现大量DLL的原因。通过-BruntimeDir参数,我们告诉工具把这些运行时文件归类到指定的子目录,同时工具会自动修改应用的配置文件(比如生成的test.cfg),确保可执行文件能正确找到子目录里的依赖,不需要你修改任何代码。
打包完成后,你的应用目录结构会变成这样:
test/ ├─ test.exe # 主可执行文件 ├─ test.cfg # 应用配置文件 └─ runtime/ # 存放所有JRE DLL和运行时文件 ├─ bin/ ├─ lib/ └─ ...
这样用户打开应用目录就能一眼找到可执行文件,完全符合你的需求。
内容的提问来源于stack exchange,提问作者jonenst
相关产品推荐
相关产品推荐

