2

Swing (レガシー) と JavaFX コンポーネントのハイブリッドであるアプリケーションがあります。プリローダーをミックスに挿入しようとするまでは正常に機能していましたが、fxml ファイルと FXMLLoader を使用するすべての JavaFX コンポーネントが機能しなくなりました。new FXMLLoader() (パラメーターの有無にかかわらず) の直後に NPE がスローされるためです。 FXMLLoader.load()が呼び出されます。

64 ビット Java 7u67 を使用しています。

スタック トレースは次を示します。

javafx.fxml.JavaFXBuilderFactory.(JavaFXBuilderFactory.java:85) での java.lang.NullPointerException。javafx.fxml.JavaFXBuilderFactory.(JavaFXBuilderFactory.java:53) で。 .fxml.FXMLLoader.load(FXMLLoader.java:2771)

PreLoader を挿入する前に、初期化クラスが作業を行い、実際のアプリケーションの main() メソッドを呼び出します。アプリケーションの main() メソッドがプリローダーの start() メソッドの下で呼び出されるプリローダーでも、基本的には同じことです。

何が原因なのか困っています。何か案は?

4

1 に答える 1

2

ソース コードを確認する必要がありましたが、オンラインで見つけたものは # 報告された行と一致しませんでした。

とにかく、私が見たところ、私が説明した遷移でデフォルトのクラスローダーが null になるようです。問題を解決するために私がしたことは、クラスローダーを動作中のインスタンスに設定することです。

        try {
           fxmlLoader = new FXMLLoader(getClass().getResource("Sample.fxml"));
        } catch(Exception e) {
           FXMLLoader.setDefaultClassLoader(SampleController.class.getClassLoader());
           fxmlLoader = new FXMLLoader(getClass().getResource("Sample.fxml"));
        }

もちろん、すぐにデフォルトのクラスローダーを設定することもできます。

于 2014-10-18T04:16:03.427 に答える