У меня серьезная проблема при переносе приложения macos с Java 6 на Java 8. Поскольку оно развернуто на mac, программа использовала com.apple.eawt.ApplicationAdapter
, который устарел и заменен на com.apple.eawt.XYHandler
.
Пока все хорошо, я могу запустить свое приложение из Eclipse (у которого уровень соответствия компилятора установлен на 1,8, JRE установлен на Java SE 8).
Затем у меня есть скрипт, который вызывает javac, ставитскомпилированные jar-файлы в пакет .app, записывают Info.plist и так далее.Java JVMVersion
установлен на 1.8+
. Пока это тоже работает.
Когда я пытаюсь запустить приложение, он сообщает, что подходящая версия Java 1.8+ недоступна
[JavaAppLauncher] Запрошено [1.8+], вместо этого запускается в [(null)].
[Ошибка JavaAppLauncher] не удается найти версию Java для запуска
Я пыталсявсе возможные варианты для JVMVersion (1.8 *, 1.8.0_181, 1.7+, 1.6+) и последний - единственный, который запускается.Конечно, позже происходит сбой, потому что Java6 не реализует XYHandler
, но ApplicationAdapter
.
Если я запускаю основной класс из командной строки, он запускается, но впоследствии вылетает из-за этого:
dyld: символ не найден: _CTFontCopyDefaultCascadeListForLanguages Ссылка на: /Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/jre/lib/libawt_lwawt. / systemb: / lib/ApplicationServices.framework/Versions/A/ApplicationServices
Что странно, поскольку мои исследования по этой теме говорят о том, что _CTFontCopyDefaultCascadeListForLanguages должен быть доступен в Java8.
Кстати, результатверсии Java:
Java-версия "1.8.0_181"
Java (TM) SE Runtime Environment (сборка 1.8.0_181-b13)
Java HotSpot(TM) 64-разрядная серверная виртуальная машина (сборка 25.181-b13, смешанный режим)
и установлены следующие jdks
1.8.0_181, x86_64: "Java SE 8"/ Библиотека / Java / JavaVirtualMachines / jdk1.8.0_181.jdk / Contents / Home
1.8.0_60, x86_64: «Java SE 8» /Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home
1.7.0_80, x86_64: «Java SE 7» /Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home
1.6.0_65-b14-468, x86_64: «Java SE 6»"/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
1.6.0_65-b14-468, i386:" Java SE 6 "/Library/Java/JavaVirtualMachines/1.6.0.jdk/ Содержание / Главная
Так что я думаю, проблема в том, как ОС запускает приложение.Что я делаю не так?