2015-10-26 5 views
7

Ich habe gerade auf El Capitan aktualisiert und ich habe Probleme beim Starten einer benutzerdefinierten JavaFX2-Anwendung unter JDK1.7.0u79 (die neueste von Oracle erhältlich).JDK 7/JavaFX 2-Anwendung auf Mac OSX El Capitan

Wenn Sie die App starten, erhalte ich diese Ausnahme:

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 

Ich kann nicht nur wandern die App auf Java 8, so dass jede Hilfe wird sehr geschätzt.

aktualisiert

Ich habe in der Lage gewesen, die App läuft wieder zu erhalten, indem diese zu Beginn meiner Hauptmethode hinzufügen. Gibt es bessere Lösungen?

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 
    } 

Antwort

9

Nach mehr als einer Woche damit in einer umfangreichen Enterprise-Anwendung, habe ich keine Probleme in der Benutzeroberfläche bemerkt.

Für das Fehlen einer besseren Lösung, akzeptiere ich mein Update oben als Antwort. Vielleicht hilft es jemandem ...

Ich konnte die App wieder zum Laufen bringen, indem ich das zum Start meiner Hauptmethode hinzufügte.

+0

noch im Jahr 2016 brach ... smh – lapolonio

+0

Dies löste das gleiche Problem für mich, also danke für den Austausch von – moraygrieve

+0

immer noch kaputt, aber das Problem gelöst, so toll :) –

-1

Ich hatte das gleiche Problem. Ich habe den Text in ein Label geändert. Ich bin mir nicht sicher, ob das in deinem Fall möglich ist.

+0

Nein, es ist eine ziemlich komplexe Anwendung – Thomas

3

Dies ist keine direkte Antwort, aber ich hielt es für wichtig, dass dieser Fehler in einer kommenden Java-Version erkannt und behoben wurde. Siehe https://bugs.openjdk.java.net/browse/JDK-8143907

+0

Danke, aber enttäuschend, dass es so lange dauert, eine offizielle Lösung dafür zu finden. – Thomas

Verwandte Themen