2017-11-23 10 views
1

JavaFXアプリケーションを開発中です。それはその最も基本的な段階です。しかし、私は修正することができない奇妙なエラーが続いています。私はオンラインで見て、勧告に従っています。しかし、問題は非常に基本的なものなので、何が問題になるのか理解できません。場所が正しいと指定されているにもかかわらず、場所が必要であることがわかります。JavaFXの場所が必要です。ファイルが見つかりません。

Caused by: java.lang.NullPointerException: Location is required. 

これは、このためのParent root....行を示しています。上記のコードは、スケジュール・ドライバ・クラスに位置していること

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

public void start(Stage primaryStage) throws Exception{ 
    Parent root = FXMLLoader.load(getClass().getResource("ScheduleView.fxml")); 
    primaryStage.setScene(new Scene(root, 500, 500)); 
    primaryStage.setTitle("Scheduler"); 
    primaryStage.show(); 
} 

注:ここ

iはFXML文書をロードするために使用するコードです。

以下

は、ファイルカルコゲノフルバレン骨格

This is the file structure of the project

である私は、まったく同じFXコード/文書と独立したJavaFXプロジェクトを作成しようとした、それが動作します。どんな助けもありがとう。

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

+0

クリーンで再構築してみましたか? –

+0

はい、問題は残ります。 – User59

+0

依存関係管理としてmavenがあれば、どうすればgradleでできるのか分かりません。( – Sunflame

答えて

1

src/main/resourcesディレクトリにfxmlファイルを置きます。

し、それをロードする(スラッシュを追加しました):

Parent root = FXMLLoader.load(getClass().getResource("/ScheduleView.fxml")); 

ディレクトリのsrc /メイン/ javaのがクラスパス上にありません。

+0

これは動作しません。これは、mavenやgradleのような依存関係マネージャがあればリソースフォルダを作成し、' getC lass()。getResource(...) 'が' resources'フォルダからファイルを取得しようとしています – Sunflame

+0

@Sunflameが間違っています。 mavenは_src/main/resources_の内容を取得し、ビルドプロセス中に_target/classes_フォルダに入れます。これは、クラスローダーが_src/main/resources_を探す場所です。 –

+0

ああ申し訳ありませんが、あなたの答えの最初の行は見えませんでした。ハイライトされたコードだけでした。唯一の違いは '/'でした。もしそれが今のところ同じ場所にあればうまくいかないでしょうそれがうまくいく資源の中にあります。私の不注意で申し訳ありません。しかし、それ以外にもリソースの '.fxml'ファイルを分けることは、本当に良い解決策ではありません。 – Sunflame

関連する問題