2017-12-11 4 views
1

他のjarファイルでFXMLを開くフレームワークを作成しました。これはすべて私のFXMLのために働くと私は本当にこれを変更する必要はありませんfx:リソースが別のJARにある場合のインクルード

FXMLLoader loader = new FXMLLoader(); 
Parent node = loader.load(getClass().getClassLoader().getResource(fxml).openStream()); 

...

(FXML)は、DBのクエリから渡された文字列です:私はそれらを開くには、次を使用します。

私は別のウィンドウと非常によく似たインプリメンテーションを持つ1つの新しいウィンドウを持っていて、FXLをfx:includeと共有したいと思っていました。

ただし、これはエラーをスローします。javafx.fxml.LoadException:ベースの場所は未定義です。私の全体の実装を変更せず -

が、私はこの問題を回避とにかくありlinked files

については、このリンクを見つけましたか?もしそうでなければ、ロジックを複製するだけです。

ありがとうございました。

+0

を試してみて、私はそれがこの/fxml/location/view.fxmlのような完全な場所を使用して、実行時に動作させることができました - しかし、それSceneBuilderで開くことができません –

+0

ローダーで位置が定義されていないため(一部の機能が使用できないようにするため)、 'InputStream'バージョンの' FXMLLoader.load(...) 'を使うのは悪い考えです。場所を指定して、引数なしの 'load()'メソッドを呼び出します。 –

答えて

2

InputStreamを入力すると、locationURL)は定義されていません。どうやらあなたのFXMLはどこか(例えば、位置分解能を経由して)場所を使用している

FXMLLoader loader = new FXMLLoader(getClass().getClassLoader().getResource(fxml)); 
Parent node = loader.load(); 
+0

ありがとうございました - 約2年間オープンストリームを使っていました - 私が最初に立ち上げたときにそれをここで見つけたと思います。それは働いたので、私はそれ以上見ていませんでした。 –

関連する問題