Я только что установил macOS High Sierra (10.13) и пытаюсь обновить написанное мной руководство, в котором показано, как упаковать приложение Java Swing (исполняемый JAR) в установщик macOS.
Шаги учебного пособия отлично работали в macOS Serra (10.12).
Теперь команда javapackager
вылетает:
ОШИБКА: файл не найден. (-43) в файле: /var/folders/c1/hkb.../images/ShowTime/.VolumeIcon.icns
Системная информация:
Darwin Comet.local 17.0.0 Darwin Kernel Version 17.0.0: Thu Aug 24 21:48:19 PDT 2017; root:xnu-4570.1.46~2/RELEASE_X86_64 x86_64
java version "9"
Java(TM) SE Runtime Environment (build 9+181)
Java HotSpot(TM) 64-Bit Server VM (build 9+181, mixed mode)
Упрощенные шаги для воспроизведения:
curl --remote-name https://centerkey.com/mac/java/ShowTime.java
javac ShowTime.java
echo "Main-Class: ShowTime" > MainClass.txt
jar cmf MainClass.txt ShowTime.jar *.class
jdk=$(/usr/libexec/java_home)
$jdk/bin/javapackager -deploy -native dmg -name ShowTime \
-srcdir . -srcfiles ShowTime.jar -appclass ShowTime \
-outdir deploy -outfile ShowTime -v
Полная ошибка:
Running [/usr/bin/SetFile, -c, icnC, /var/folders/c1/hkb5ph9s7l352nhr17n310vc0000gn/T/fxbundler10109585143778151656/images/ShowTime/.VolumeIcon.icns]
ERROR: File Not Found. (-43) on file: /var/folders/c1/hkb5ph9s7l352nhr17n310vc0000gn/T/fxbundler10109585143778151656/images/ShowTime/.VolumeIcon.icns
java.io.IOException: Exec failed with code 2 command [[/usr/bin/SetFile, -c, icnC, /var/folders/c1/hkb5ph9s7l352nhr17n310vc0000gn/T/fxbundler10109585143778151656/images/ShowTime/.VolumeIcon.icns] in unspecified directory
at jdk.packager/com.oracle.tools.packager.IOUtils.exec(IOUtils.java:169)
at jdk.packager/com.oracle.tools.packager.IOUtils.exec(IOUtils.java:142)
at jdk.packager/com.oracle.tools.packager.IOUtils.exec(IOUtils.java:136)
at jdk.packager/com.oracle.tools.packager.mac.MacDmgBundler.buildDMG(MacDmgBundler.java:391)
at jdk.packager/com.oracle.tools.packager.mac.MacDmgBundler.bundle(MacDmgBundler.java:92)
at jdk.packager/com.oracle.tools.packager.mac.MacDmgBundler.execute(MacDmgBundler.java:549)
at jdk.packager/com.sun.javafx.tools.packager.PackagerLib.generateNativeBundles(PackagerLib.java:371)
at jdk.packager/com.sun.javafx.tools.packager.PackagerLib.generateDeploymentPackages(PackagerLib.java:348)
at jdk.packager/com.sun.javafx.tools.packager.Main.main(Main.java:496)
Config files are saved to /var/folders/c1/hkb5ph9s7l352nhr17n310vc0000gn/T/fxbundler10109585143778151656/macosx. Use them to customize package.
Exception in thread "main" com.sun.javafx.tools.packager.PackagerException: Error: Bundler "DMG Installer" (dmg) failed to produce a bundle.
at jdk.packager/com.sun.javafx.tools.packager.PackagerLib.generateNativeBundles(PackagerLib.java:374)
at jdk.packager/com.sun.javafx.tools.packager.PackagerLib.generateDeploymentPackages(PackagerLib.java:348)
at jdk.packager/com.sun.javafx.tools.packager.Main.main(Main.java:496)
Полное руководство и шаги: Mac Java! | commands.txt
Ошибка возникает независимо от того, предоставил ли я файл значка или нет. Есть идеи, как это исправить?
javapackager
работала с Java 9 на Sierra (10.2) до обновления до High Sierra (10.13). Ошибка началась после обновления до High Sierra (10.13). На всякий случай я переустановил Java 9, но ошибка осталась. - person Dem Pilafian   schedule 03.10.2017javapackager
с JDK 9.0.1, загруженным с сайта Oracle @ oracle.com/technetwork/java/javase/downloads/ и не получите эту ошибку. Я подозреваю, что проблема в сборке JDK. - person GabeV   schedule 23.10.2017Simplified steps to reproduce
? Я действительно хотел бы найти способ изменить шаги для обхода этой проблемы (в настоящее время Oracle планирует устранить ошибку в Java 10 ... в 2021 году?). - person Dem Pilafian   schedule 24.10.2017-native image
в своей команде, а неdmg
. В итоге я получаю DMG на своем рабочем столе с помощью ShowTime.app и ссылку на папку «Приложения». Я скопировал приложение, запустил его, и оно работает. Я полагаю, что обходной путь может заключаться в запуске-native image
, который сгенерирует файл .app, а затем вы можете создать DMG отдельно. Я готов поспорить, что для этого есть утилиты. - person GabeV   schedule 24.10.2017dmg
не работает, ноimage
работает, и кажется, чтоpkg
также работает и создает установщик .pkg - отличный от .dmg файл, но все же желаемый результат. (Если вы превратите свой комментарий в ответ, я отмечу его как решение.) - person Dem Pilafian   schedule 24.10.2017