2015-10-26 47 views
7

Ho appena eseguito l'aggiornamento a El Capitan e sto riscontrando problemi nell'avvio di un'applicazione JavaFX2 personalizzata in esecuzione su JDK1.7.0u79 (l'ultima disponibile da Oracle).Applicazione JDK 7/JavaFX 2 su Mac OSX El Capitan

Quando si avvia l'applicazione, sto ottenendo questa eccezione:

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 

Non posso migrare l'applicazione per Java 8, quindi ogni aiuto è molto apprezzato.

Aggiornamento

Sono stato in grado di ottenere l'applicazione in esecuzione di nuovo con l'aggiunta di questo al punto di partenza del mio metodo principale. Qualche soluzione migliore là fuori?

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 
    } 

risposta

9

Dopo più di una settimana in un'applicazione aziendale estesa, non ho rilevato alcun problema nell'interfaccia utente.

Per la mancanza di una soluzione migliore, accetto il mio aggiornamento sopra come risposta. Forse aiuta qualcuno ...

Sono stato in grado di riavviare l'app aggiungendola all'inizio del mio metodo principale.

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

ancora rotto nel 2016 ... SMH – lapolonio

+0

Questa risolto lo stesso problema per me, quindi grazie per la condivisione di – moraygrieve

+0

ancora rotto, ma questo problema risolto così grande :) –

-1

Ho avuto lo stesso problema. Ho cambiato il testo in un'etichetta. Non sono sicuro che sia possibile nel tuo caso.

+0

No, è un'applicazione piuttosto complessa – Thomas

3

Questa non è una risposta diretta, tuttavia ho ritenuto importante comunicare che questo bug è stato identificato e corretto in una prossima versione di Java. Vedere https://bugs.openjdk.java.net/browse/JDK-8143907

+0

Grazie, ma deludente che ci voglia così tanto tempo per ottenere una risoluzione ufficiale per questo. – Thomas

Problemi correlati