2015-10-26 4 views
7

Я только что обновился до El Capitan, и у меня возникают проблемы с запуском пользовательского приложения JavaFX2, работающего под JDK1.7.0u79 (последнее из Oracle).Приложение JDK 7/JavaFX 2 на Mac OSX El Capitan

При запуске приложения, я получаю это исключение:

Exception in thread "main" java.lang.RuntimeException: Exception in Application start method 
    at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:403) 
    at com.sun.javafx.application.LauncherImpl.access$000(LauncherImpl.java:47) 
    at com.sun.javafx.application.LauncherImpl$1.run(LauncherImpl.java:115) 
    at java.lang.Thread.run(Thread.java:745) 
Caused by: java.lang.ExceptionInInitializerError 
    at java.lang.Class.forName0(Native Method) 
    at java.lang.Class.forName(Class.java:191) 
    at javafx.scene.control.Control.loadClass(Control.java:115) 
    at javafx.scene.control.Control.loadSkinClass(Control.java:1021) 
    at javafx.scene.control.Control.access$500(Control.java:70) 
    at javafx.scene.control.Control$12.invalidated(Control.java:972) 
    at javafx.beans.property.StringPropertyBase.markInvalid(StringPropertyBase.java:127) 
    at javafx.beans.property.StringPropertyBase.set(StringPropertyBase.java:161) 
    at com.sun.javafx.css.StyleableStringProperty.set(StyleableStringProperty.java:71) 
    at javafx.scene.control.Control$12.set(Control.java:964) 
    at com.sun.javafx.css.StyleableStringProperty.applyStyle(StyleableStringProperty.java:59) 
    at com.sun.javafx.css.StyleableStringProperty.applyStyle(StyleableStringProperty.java:31) 
    at com.sun.javafx.css.StyleableProperty.set(StyleableProperty.java:70) 
    at com.sun.javafx.css.StyleHelper.transitionToState(StyleHelper.java:900) 
    at javafx.scene.Node.impl_processCSS(Node.java:7418) 
    at javafx.scene.Parent.impl_processCSS(Parent.java:1146) 
    at javafx.scene.control.Control.impl_processCSS(Control.java:1154) 
    at javafx.scene.Parent.impl_processCSS(Parent.java:1153) 
    at javafx.scene.Parent.impl_processCSS(Parent.java:1153) 
    at javafx.scene.Node.processCSS(Node.java:7386) 
    at javafx.scene.Scene.doCSSPass(Scene.java:454) 
    at javafx.scene.Scene.preferredSize(Scene.java:1468) 
    at javafx.scene.Scene.impl_preferredSize(Scene.java:1535) 
    at javafx.stage.Window$9.invalidated(Window.java:717) 
    at javafx.beans.property.BooleanPropertyBase.markInvalid(BooleanPropertyBase.java:127) 
    at javafx.beans.property.BooleanPropertyBase.set(BooleanPropertyBase.java:161) 
    at javafx.stage.Window.setShowing(Window.java:781) 
    at javafx.stage.Window.show(Window.java:796) 
    at javafx.stage.Stage.show(Stage.java:233) 
    at au.com.religaresecurities.trademax.client.Start.start(Start.java:131) 
    at com.sun.javafx.application.LauncherImpl$5.run(LauncherImpl.java:319) 
    at com.sun.javafx.application.PlatformImpl$5.run(PlatformImpl.java:219) 
    at com.sun.javafx.application.PlatformImpl$4$1.run(PlatformImpl.java:182) 
    at com.sun.javafx.application.PlatformImpl$4$1.run(PlatformImpl.java:179) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at com.sun.javafx.application.PlatformImpl$4.run(PlatformImpl.java:179) 
    at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:76) 
Caused by: java.lang.NullPointerException 
    at com.sun.t2k.MacFontFinder.initPSFontNameToPathMap(MacFontFinder.java:339) 
    at com.sun.t2k.MacFontFinder.getFontNamesOfFontFamily(MacFontFinder.java:390) 
    at com.sun.t2k.T2KFontFactory.getFontResource(T2KFontFactory.java:233) 
    at com.sun.t2k.LogicalFont.getSlot0Resource(LogicalFont.java:184) 
    at com.sun.t2k.LogicalFont.getSlotResource(LogicalFont.java:228) 
    at com.sun.t2k.CompositeStrike.getStrikeSlot(CompositeStrike.java:86) 
    at com.sun.t2k.CompositeStrike.getMetrics(CompositeStrike.java:132) 
    at com.sun.javafx.font.PrismFontUtils.getFontMetrics(PrismFontUtils.java:31) 
    at com.sun.javafx.font.PrismFontLoader.getFontMetrics(PrismFontLoader.java:466) 
    at javafx.scene.text.Text.<init>(Text.java:153) 
    at javafx.scene.text.Text.<init>(Text.java:162) 
    at com.sun.javafx.scene.control.skin.ProgressIndicatorSkin.<clinit>(ProgressIndicatorSkin.java:78) 
    ... 37 more 

Я не могу просто перенастройки приложения Java 8, так что любая помощь очень ценится.

Update

Я был в состоянии получить приложение работает снова, добавив в начале моего основного метода. Какие-нибудь лучшие решения?

try { 
     Class<?> macFontFinderClass = Class.forName("com.sun.t2k.MacFontFinder"); 
     Field psNameToPathMap = macFontFinderClass.getDeclaredField("psNameToPathMap"); 
     psNameToPathMap.setAccessible(true); 
     psNameToPathMap.set(null, new HashMap<String, String>()); 
    } catch (Exception e) { 
     // ignore 
    } 

ответ

9

После более чем одной недели с обширным корпоративным приложением я не заметил никаких проблем в пользовательском интерфейсе.

Из-за отсутствия лучшего решения, я принимаю мое обновление выше в качестве ответа. Может быть, это помогает кому-то ...

Я смог снова запустить приложение, добавив его в начало моего основного метода.

try { 
     Class<?> macFontFinderClass = Class.forName("com.sun.t2k.MacFontFinder"); 
     Field psNameToPathMap = macFontFinderClass.getDeclaredField("psNameToPathMap"); 
     psNameToPathMap.setAccessible(true); 
     psNameToPathMap.set(null, new HashMap<String, String>()); 
    } catch (Exception e) { 
     // ignore 
    } 
+0

еще сломал в 2016 году ... SMH – lapolonio

+0

Это решило тот же вопрос для меня, так что спасибо за обмен – moraygrieve

+0

Еще сломана, но это решается вопрос настолько велик :) –

-1

У меня была та же проблема. Я изменил текст на ярлык. Я не уверен, что это возможно в вашем случае.

+0

Нет, это довольно сложное приложение – Thomas

3

Это не прямой ответ, однако я решил, что важно передать, что эта ошибка была идентифицирована и исправлена ​​в предстоящей версии Java. См https://bugs.openjdk.java.net/browse/JDK-8143907

+0

Спасибо, но разочаровывая, что для принятия официальной резолюции для этого требуется такое долгое время. – Thomas

Смежные вопросы