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 时都是不必要的。
尝试将 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 时都是不必要的。