2016-10-13 5 views
0

に私はopenjdk-8-jdk-armhfとヘッドレスLinuxマシンを実行していると私は自分のアプリケーションを実行すると、NPE新しいJPanelの()を呼び出すと、ヘッドレス(RepaintManager.currentManager)

METRICS = new JPanel().getFontMetrics(FONT); 

ラインが戻っRepaintManager.currentManager(RepaintManager.java:262)に到達NullPointerExceptionがスロー、これは次のようになります。次のように

public static RepaintManager currentManager(Component c) { 
     // Note: DisplayChangedRunnable passes in null as the component, so if 
     // component is ever used to determine the current 
     // RepaintManager, DisplayChangedRunnable will need to be modified 
     // accordingly. 
     return currentManager(AppContext.getAppContext()); 
    } 

完全なトレースは次のとおりです。

java.lang.NullPointerException 
    at javax.swing.RepaintManager.currentManager(RepaintManager.java:262) 
    at javax.swing.JComponent.repaint(JComponent.java:4799) 
    at java.awt.Component.repaint(Component.java:3303) 
    at javax.swing.JComponent.setFont(JComponent.java:2756) 
    at javax.swing.LookAndFeel.installColorsAndFont(LookAndFeel.java:208) 
    at javax.swing.plaf.basic.BasicPanelUI.installDefaults(BasicPanelUI.java:66) 
    at javax.swing.plaf.basic.BasicPanelUI.installUI(BasicPanelUI.java:56) 
    at javax.swing.JComponent.setUI(JComponent.java:664) 
    at javax.swing.JPanel.setUI(JPanel.java:153) 
    at javax.swing.JPanel.updateUI(JPanel.java:126) 
    at javax.swing.JPanel.<init>(JPanel.java:86) 
    at javax.swing.JPanel.<init>(JPanel.java:109) 
    at javax.swing.JPanel.<init>(JPanel.java:117) 
    at lukemoll.MyClass.<init>(MyClass.java:15) 

このエラーは、jsvcjavaコマンドの両方で再現できます。

+0

システムプロパティ 'System.setProperty( "java.awt.headless"、 "true");の設定は役に立ちますか? – Robin

+0

@Robin私は自分のコードのどこかに追加したと思ったが、私はそれを試みるだろう(私は5分、SFTPにする必要がある) –

+0

@Robinは何もしていないようだ:/ –

答えて

0

Gyro Gearlessのおかげで、this answerを指摘してください。

この(Canvas)は、ヘッドレスモードでも動作します。

私はnew Canvas().getFontMetrics(font);を使用してしまいましたが、私は前回はどのように動作させるのかは分かりませんが、Works on My Machine(tm)です。

関連する問題