这个月的 macOS Java 应用构建失败,代码中返回 1,签署 libnet.dylib。拷贝 libnet.dylib,尝试使用与 jpackage 相同的 codesign 命令,它说已经签名。
这是其中一个似乎“上个月工作正常,没有变化”的情况。是的,应用程序的 Java 源代码已更改,但生成脚本没有更改,jdk 版本也没有更改。
有任何线索下一步要查找的地方非常感激。
这里是经过编辑的 jpackage 命令
$JAVA_HOME/bin/jpackage --verbose \
--dest bundles \
--input build \
--name DrumScoreEditor \
--main-class org.whiteware.DrumScoreEditor \
--main-jar DrumScoreEditor_$VERSION.jar \
--add-modules java.base,java.desktop,java.datatransfer,java.prefs,java.xml,java.logging \
--java-options "--add-opens java.desktop/com.apple.eawt.event=ALL-UNNAMED" \
--app-version $VERSION \
--copyright "Copyright (c) 2023 Alan R. White" \
--vendor "drumscore.scot" \
--file-associations autobuild/filetypes.txt \
--mac-sign \
--mac-package-signing-prefix org.whiteware.DrumScoreEditor \
--mac-signing-key-user-name "Alan White (REDACTED)" \
--mac-package-name "Drum Score Editor" \
--mac-entitlements autobuild/entitlements.txt \
--resource-dir package/macosx
错误...
[17:50:24.874] Running /usr/bin/codesign
[17:50:25.526] java.io.IOException: Command [/usr/bin/codesign, -s, Developer ID Application: Alan White (REDACTED), -vvvv, --timestamp, --options, runtime, --prefix, org.whiteware.DrumScoreEditor, /var/folders/70/dxx7_3xn7kq1wl8bq0sfnch40000gn/T/jdk.jpackage10506364833728775098/images/image-10320893665944302794/DrumScoreEditor.app/Contents/runtime/Contents/Home/lib/libnet.dylib] exited with 1 code
at jdk.jpackage/jdk.jpackage.internal.Executor.executeExpectSuccess(Executor.java:90)
at jdk.jpackage/jdk.jpackage.internal.IOUtils.exec(IOUtils.java:215)
手动运行 codesign 如上所示 ...
➜ autobuild git:(modelrip) ✗ cp /Library/Java/JavaVirtualMachines/temurin-17.jdk/Contents/Home/lib/libnet.dylib .
➜ autobuild git:(modelrip) ✗ /usr/bin/codesign -s "Developer ID Application: Alan White (REDACTED)" -vvvv --timestamp --options runtime --prefix org.whiteware.DrumScoreEditor libnet.dylib
libnet.dylib: is already signed
编辑以在失败时显示冗长的日志条目
[08:40:50.007] Using default package resource Runtime-Info.plist.template [Java Runtime Info.plist] (add Runtime-Info.plist to the resource-dir to customize).
[08:40:50.016] Running /usr/bin/codesign
[08:40:50.342] Running /usr/bin/codesign
[08:40:51.454] java.io.IOException: Command [/usr/bin/codesign, -s, Developer ID Application: Alan White (REDACTED), -vvvv, --timestamp, --options, runtime, --prefix, org.whiteware.DrumScoreEditor, /var/folders/70/dxx7_3xn7kq1wl8bq0sfnch40000gn/T/jdk.jpackage2766942816810615066/images/image-16726125713601794084/DrumScoreEditor.app/Contents/runtime/Contents/Home/lib/libnet.dylib] exited with 1 code
at jdk.jpackage/jdk.jpackage.internal.Executor.executeExpectSuccess(Executor.java:90)
at jdk.jpackage/jdk.jpackage.internal.IOUtils.exec(IOUtils.java:215)
在50.016处的消息似乎是调用codesign来取消签名库,然后下一步是尝试签名失败。如果有办法将失败的codesign实际文本消息显示出来,而不仅仅是其返回码1,那将会非常有用。