jpackage --type app-image创建无限递归目录

问题描述

我正在尝试使用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时仍然出现错误。我将其作为后续文章的主题。