Java-приложение в комплекте для Mac не запускается
Я использую jarbundler 2.2.0, как предложено другими ответами, так как приложение должно работать на jre 1.6 от Apple.
пакет кажется правильным, показывает с соответствующим значком, но нажатие на него ничего не делает. Если я войду в его содержимое и попытаюсь дважды щелкнуть банку с указанным основным файлом, все будет хорошо.
есть ли способ увидеть, что происходит? Какая-то ошибка или журнал, который я вижу?
редактировать Запрошенная Информация.файл plist. Поскольку код является частным, Я заменил некоторые вещи приложением:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<plist version="1.0">
<dict>
<key>CFBundleName</key>
<string>Application</string>
<key>CFBundleShortVersionString</key>
<string>2.2.0</string>
<key>CFBundleGetInfoString</key>
<string>Application version</string>
<key>CFBundleAllowMixedLocalizations</key>
<string>false</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleExecutable</key>
<string>JavaApplicationStub</string>
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>beta</string>
<key>CFBundleIconFile</key>
<string>SynamicD.icns</string>
<key>CFBundleIdentifier</key>
<string>net.sourceforge.javydreamercsw</string>
<key>Java</key>
<dict>
<key>MainClass</key>
<string>net.sourceforge.javydreamercsw.Main</string>
<key>JVMVersion</key>
<string>1.6.*</string>
<key>ClassPath</key>
<array>
<string>$JAVAROOT/Application.jar</string>
<string>$JAVAROOT/liblib1.jar</string>
<string>$JAVAROOT/liblib2.jar</string>
</array>
<key>Properties</key>
<dict>
<key>apple.awt.textantialiasing</key>
<string>true</string>
<key>apple.awt.brushMetal</key>
<string>true</string>
<key>apple.laf.useScreenMenuBar</key>
<string>true</string>
<key>apple.awt.showGrowBox</key>
<string>true</string>
</dict>
</dict>
</dict>
</plist>
содержимое PkgInfo:
APPL????
в приложении.app / Contents / MacOS у меня есть JavaApplicationStub с компьютера Mac.
результирующая структура файла:
Application.app
|
---Contents
|
---Info.plist
---PkgInfo
---MacOS
|
| ---JavaApplicationStub
---Resources
|
---Java
|
----lib
|
---lib1.jar
|
---lib2.jar
|
---Application.jar
|
---Application.icns
запрошенные выходы для команд:
~ $ java -version
java version "1.7.0_17"
Java(TM) SE Runtime Environment (build 1.7.0_17-b02)
Java HotSpot(TM) 64-Bit Server VM (build 23.7-b01, mixed mode)
~ $ sw_vers -productVersion
10.8.2
~ $ /usr/libexec/java_home -V
Matching Java Virtual Machines (4):
1.7.0_17, x86_64: "Java SE 7" /Library/Java/JavaVirtualMachines/jdk1.7.0_17.jdk/Contents/Home
1.7.0_15, x86_64: "Java SE 7" /Library/Java/JavaVirtualMachines/jdk1.7.0_15.jdk/Contents/Home
1.6.0_43-b01-447, x86_64: "Java SE 6" /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
1.6.0_43-b01-447, i386: "Java SE 6" /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
/Library/Java/JavaVirtualMachines/jdk1.7.0_17.jdk/Contents/Home
~ $ /usr/libexec/java_home
/Library/Java/JavaVirtualMachines/jdk1.7.0_17.jdk/Contents/Home
~ $ echo $JAVA_HOME
~ $ echo $JAVA_ARCH
~ $ /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java -version
java version "1.7.0_17"
Java(TM) SE Runtime Environment (build 1.7.0_17-b02)
Java HotSpot(TM) 64-Bit Server VM (build 23.7-b01, mixed mode)
~ $ ls /Library/Java/JavaVirtualMachines
jdk1.7.0_15.jdk jdk1.7.0_17.jdk
~ $ /System/Library/Frameworks/JavaVM.framework/Commands/java -version
java version "1.6.0_43"
Java(TM) SE Runtime Environment (build 1.6.0_43-b01-447-11M4203)
Java HotSpot(TM) 64-Bit Server VM (build 20.14-b01-447, mixed mode)
~ $
2 ответов
эти обратные косые черты, безусловно, неверны, так как Mac OS-это Unix. Должно быть:
<array>
<string>$JAVAROOT/Application.jar</string>
<string>$JAVAROOT/lib/lib1.jar</string>
<string>$JAVAROOT/lib/lib2.jar</string>
</array>
поскольку вы сказали, что сделали это в Windows, еще одна вещь, которую я бы проверил, - это права доступа к файлам. Эти файлы, в частности:
- macOS / JavaApplicationStub (rwxrwxr-x)
- Ресурсы / Java / Приложение.jar (- rw-rw-r--)
- ресурсы / Java/lib / lib1.jar (- rw-rw-r--)
- ресурсы / Java/lib / lib2.jar (- rw-rw-r--)
и наконец, JVMVersion 1.6 * является не рекомендуется. Попробуйте использовать 1.5+ или 1.6+, так как он может быть более совместимым.
исключив все вышеперечисленное, проблема должна лежать с JavaApplicationStub. Примечание со страниц JarBundler:
когда задача JARBUNDLER ANT используется под Windows или Linux, копия JavaApplicationStub должна быть предоставлена разработчиком. Это не может быть построено из источника, но должно быть получено из Mac OS X система.
известная проблема с Java запуск заглушки
в начале 2006 года обновление Apple до Quicktime (7.0.4) вызвало более старое версии "JavaApplicationStub" не запускаются. Эти старые копии пришли от разработчиков, которые первыми создали пакет приложений как каталог, а затем создал новые приложения, заменив JAR файлы внутри пакета и не заменяют "JavaApplicationStub" на более актуальный копировать.
вы пробовали запустить приложение через терминал с помощью open
?
open Application.app
Это должно дать вам больше информации о том, почему приложение не может выполнить ваш jar.
обновление:
При беге через open
выходы:
ошибка LSOpenURLsWithRole () с ошибкой -10810 для файла /Users/MacBookPro/NetBeansProjects/SynamicD/dist/SynamicD.app
ссылка https://developer.apple.com/library/mac/documentation/Carbon/Reference/LaunchServicesReference/LaunchServicesReference.pdf (стр. 69) показывает, что описание ошибки:
kLSUnknownErr -10810 произошла неизвестная ошибка. Доступно в OS X v10.0 и позже.