jpackage 不适用于 Windows 10 和 JDK 16

jpackage not working on Windows 10 and JDK 16

尝试将 jpackage 用于我的一个项目,但不起作用,崩溃并显示 103 错误代码。

命令: jpackage.exe --main-jar evomaster.jar --input core/target/ --type msi

错误:

java.io.IOException: Command [C:\Program Files (x86)\WiX Toolset v3.11\bin\light.exe, -nologo, -spdb, -ext, WixUtilExtension, -out, C:\Users\arcur\WORK\code\EvoMaster\Main-1.0.msi, -sice:ICE27, -loc, C:\Users\arcur\AppData\Local\Temp\jdk.jpackage3073169401587857747\config\MsiInstallerStrings_en.wxl, -cultures:en-us, C:\Users\arcur\AppData\Local\Temp\jdk.jpackage3073169401587857747\wixobj\main.wixobj, C:\Users\arcur\AppData\Local\Temp\jdk.jpackage3073169401587857747\wixobj\bundle.wixobj] in C:\Users\arcur\AppData\Local\Temp\jdk.jpackage3073169401587857747\images\win-msi.image\Main exited with 103 code

JVM: openjdk 版本“16” 2021-03-16 OpenJDK 运行时环境 AdoptOpenJDK (build 16+36) OpenJDK 64 位服务器 VM AdoptOpenJDK(build 16+36,混合模式,共享)

OS 名称 Microsoft Windows 10 Pro 版本 10.0.18363 内部版本 18363

任何线索(关于我做错了什么)或解决方法(如果有人已经遇到过这个问题)?

更新:

在 Jorn Vernee 的建议下,我直接 运行 light 命令,查看错误信息。它充满了:

C:\Users\arcur\WORK\code\EvoMaster\foo\config\bundle.wxf(14413) : error LGHT0103 : The system cannot find the file 'C:\Users\arcur\WORK\code\EvoMaster\foo\images\win-msi.image\Main\app\classes\org\evomaster\core\search\service\Archive$sortAndShrinkIfNeeded$inlined$thenBy.class'.

所有这些错误消息的共同点是它们都与 inlined 类 有关。程序是用Kotlin编写的,Jar是用maven-assembly-plugin

构建的

感谢关于 Reddit 的讨论,我找到了一个解决方案:您需要将 app.jar 文件从 target 文件夹中取出,并将其放在一个文件夹中(例如, foo) 只有那个文件。然后,将这个新文件夹用于 --input 命令。

问题的根源似乎是 light.exe 不喜欢太长的文件路径...但是 target 下的所有其他文件在处理 uber-jar 时都是不必要的。