のNPE

2017-01-21 20 views
0

は、私は、比較的簡単なテストクラスを書いた:のNPE

public class Main extends Application { 

    @Override public void start(Stage stage) { 
     BorderPane root = new BorderPane(); 
     Scene scene = new Scene(root, 400, 400); 

     HTMLEditor editor = new HTMLEditor(); 
     root.setCenter(editor); 

     Platform.runLater(editor::requestFocus); 

     stage.setScene(scene); 
     stage.show(); 
    } 

    public static void main(String[] args) { 
     launch(args); 
    } 

} 

私は(エディタが焦点を当てています)これを実行すると、私は、私は、このかなり暗い探しウィンドウに迎え、と私は何かを入力するとしていますすぐNullPointerExceptionを得る:

Exception in thread "JavaFX Application Thread" java.lang.NullPointerException 
    at com.sun.javafx.scene.web.skin.HTMLEditorSkin.applyTextFormatting(HTMLEditorSkin.java:1100) 
    at com.sun.javafx.scene.web.skin.HTMLEditorSkin.lambda$new$3(HTMLEditorSkin.java:293) 
    at com.sun.javafx.event.CompositeEventHandler$NormalEventHandlerRecord.handleBubblingEvent(CompositeEventHandler.java:218) 
... 

enter image description here

私が最初に気づいた三つのことがあった。

  1. エラーがHTMLEditorSkinに関連すると思われるので、私は1つを適用しようとしたが、Eclipseは、このクラスはAPIではない私を知らせます。これをどうすればいいのですか?もしそうなら、私はアクセス制限をするべきですか?(JavaFX自体はAPIではないので)
  2. HTMLEditorは、焦点の合っていないに見え、デフォルトによって全く選択したフォントがありません(私は問題が引き起こされている場合、これはあると思いますが。)
  3. HTMLEditorSkinは、パッケージ階層com.sun.javafxなくjavafxからです。

しかし、私はfirst example of Oracle's tutorialに従って正しく処理しているようです。

ここで何が問題になりますか?これはバグかもしれないような気がする。 setHtmlTextで最初のテキストを設定する


  1. 未遂ソリューションや、既に受け取った答え。
    setHtmlText("<body style='font-family: something;'>text</body>");
    これは、テキストとフォントを設定しないが、エディタは影響を受けません。 setStyle

  2. セットスタイル。
    setStyle("-fx-font: 12 something");
    これは、UIフォントのみを変更します。
  3. JDK 8u122のインストール。
+0

それは(ほとんどのLinuxで、私は思う)一部の環境で発生するバグです。 JDK 8u122にアップグレードしてバグがなくなりました。 – Omid

+0

@Omid私はWindowsを使用していますが、一度私のPCに戻ってみることにします。編集:これは初期のアクセスビルドのようです - これは修正されましたか? – Moira

+0

はい、早期アクセスビルドです。私は8u121(現在)で修正されているかどうかはわかりませんが、できるだけ早く確認しようとしています。 – Omid

答えて

0

エラーが原因による不具合に上昇させ、HtmlEditorはデフォルトでフォントファミリを設定しないと、あなたが入力を開始するとき、あなたがNPEを取得しますので、選択されていないフォントがありません。入力を開始する前にフォントファミリを選択すると、エラーは発生しません。 JDK 8u122にこのバグのアップグレードを回避するためには

P.S.(jre-8u122-ea-bin-b04-linux-x64-25_oct_2016Kubuntu 16.10でテスト)私は以前のバージョンをチェックしなかった。以前のリリースでは修正されていた可能性がありますが、それは8u111に存在します。

+0

私はこれを試してみました(そして古いJDKをアンインストールしました)。少なくとも私にとっては何も変わっていないようです。編集:更新しなくてもMac上で動作するようです。おそらくそれはWindows関連のバグでしょうか? – Moira

+0

私はKubuntu 16.10を使用しています。私はjdk 8u111でこの問題を抱えていましたが、私がjre 8u122(ea)に変更したときに消えました。しかし、なぜWindows上で動作していないのか分かりません。 – Omid

+0

私はアクセスできる別のWindowsラップトップで動作します。何が起こっているのかわかりませんが、あなたの提案に感謝します – Moira