Пакет Java 7 .jar для Mac

Я создал.jar, который требует Java 7. У меня есть Java 7 (JDK и JRE), и я могу дважды щелкнуть, чтобы запустить.jar. Тем не менее, я хочу упаковать это в приложение.

Что я попробовал: используя инструмент Apple Jar Bundler, я успешно создал приложение; однако, когда я запускаю его, он быстро появляется и исчезает в доке. Когда я запускаю внутренний файл JavaApplicationStub из терминала я получаю:

Exception in thread "main" java.lang.UnsupportedClassVersionError: org/lcmmun/kiosk/gui/Kiosk : Unsupported major.minor version 51.0
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
    at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:247)
    at apple.launcher.LaunchRunner.loadMainMethod(LaunchRunner.java:56)
    at apple.launcher.LaunchRunner.run(LaunchRunner.java:112)
    at apple.launcher.LaunchRunner.callMain(LaunchRunner.java:51)
    at apple.launcher.JavaApplicationLauncher.launch(JavaApplicationLauncher.java:52)

что, согласно " unsupportedclassversionerror неподдерживаемый major.minor версии 51.0 не может загрузить класс" означает, что у меня не установлена ​​Java 7. Но я делаю.

Итак, моя гипотеза состоит в том, что JavaApplicationStub Java 7-несовместима

Я также слышал о задаче ANT для выполнения той же задачи, но она казалась слишком сложной, и я не знаю, как использовать ANT. Если бы это действительно было решением, я был бы счастлив узнать.

РЕДАКТИРОВАТЬ: я также попробовал Eclipse Экспорт> Другое> Mac OS Application Bundle. Это также не удается.

Я бегу 10,8 Mountain Lion, 64-битный.

1 ответ

вопрос

Вы определенно правы с вашим предположением, что яблоки JavaApplicationStub находится здесь:

  • System/Library/Frameworks/JavaVM.framework/Resources/MacOS/JavaApplicationStub

совместим только с собственной сборкой Java Packages для Mac OS X.

причина

Apple прекращает выпуск своих собственных системных пакетов Java и поддерживает только Java 6 в процессе их исчезновения. Oracle вступил во владение и предоставляет Java 7 для Mac OS X начиная с 10.7.3. Apple даже прекращает разработку таких инструментов, как Jar Bundler.app без какого-либо уведомления, как вы можете видеть в этом посте:

Некоторые люди даже отчаянно пытались вручную увеличить JVMVersion стоимость имущества в Info.plist прочитанный яблоками JavaApplicationStub из документального литерала 1.6 или же 1.6+ недокументированному буквальному как 1.7, Это тоже не сработает, и вы получите диалоговое окно, подобное этому, даже если вы установили пакет Oracle 7 Java.

UserNotificationCenter

Так что, скорее всего, вы найдете другие несоответствия между устаревшим миром Apple Java 6 и будущим миром Oracle Java 7.

Решение

Для создания пакетов приложений на основе Oracle 7 для Oracle необходимо использовать Ant-задачу Oracles, содержащую Oracle. JavaAppLauncher, Теперь он поддерживает только Oracles Java 7 для Mac OS X и не имеет обратной совместимости с собственными системными пакетами Java от Apple.

Хорошая новость заключается в том, что вы можете встроить Oracle 7 JRE в свой пакет приложений. Он будет содержаться в каталоге

  • Contents/PlugIns

в пакете приложения, например

  • Contents/PlugIns/jdk1.7.0_17.jdk

Это означает, что ваш пакет приложений полностью автономен и готов к развертыванию в App Store.

Но ты не обязан это делать. Вы также можете положиться на установленный пакет Oracle Java 7.

Для более подробного ответа вы также должны оформить заказ:

Другие вопросы по тегам