问题描述
我正在尝试使用jpackage
为我的Java应用程序创建安装程序。我在使用OpenJDK 15.0.1的Windows 10上。我可以使用
jpackage --input C:\MyApp --main-jar MyApp.jar
这基本上可以工作,但是已安装的应用程序缺少资源文件。根据文档,我应该能够构建一个应用程序映像,将我的资源文件添加到该映像,然后从修改后的应用程序映像构建安装程序,如下所示:
jpackage --type app-image -n MyAppImage
copy <resource files> MyAppImage
jpackage --app-image MyAppImage --name MyAppInstaller
但是,当我尝试jpackage --type app-image
时,进程永远不会终止,我必须使用control-C终止它。当我检查MyAppImage
目录时,它有一个子目录app
,该子目录或多或少地反映了C:\MyApp
的内容。这些内容包括MyAppImage
,将其递归复制到app
子目录中,从而创建潜在的无限目录集:C:\MyApp\MyAppImage\app\MyAppImage\app\MyAppImage
...
如果我手动删除app\MyAppImage
并尝试jpackage --app-image
,则jpackage会由于java.io.IOException而崩溃。
还有其他人遇到过吗?我该怎么办?
解决方法
事实证明,shell工作目录有所不同。 --input指定的目录不应与将要创建应用程序映像的目录相同。
我通过创建子目录C:\ MyApp \ build并复制来解决了该问题 MyApp.jar进行构建。
cd C:\MyApp
mkdir build
copy MyApp.jar build
jpackage --type app-image --n MyAppImage --input C:\MyApp\build --main-jar MyApp.jar
递归文件复制不再发生。但是运行jpackage --app-image
时仍然出现错误。我将其作为后续文章的主题。