IntelliJを使用していますIDEA 13.1.5、以前はEclipseで作業していました。JavaFXアプリケーションで作業しています。getClass()。getResourceを使用してMainAppクラス内にFXMLファイルをロードしようとします()。私はドキュメントを読み、いくつかのアイデアを試しましたが、最後にnullを持っています。
これは階層です:
dz.bilaldjago.homekode.MainApp.Java
dz.bilaldjago.homekode.view.RootLayout.FXML
これは私が使用したコードスニペットです:
FXMLLoader loader = new FXMLLoader();
loader.setLocation(getClass().getResource("view/RootLayout.fxml"));
ルートからURLを与え、クラスローダーを使用するような他の解決策を試しました
結果は同じです。どんなアイデアでも
IDEAのresource root
を指摘して、この問題を解決しました。
Right click
ディレクトリ(またはプロジェクト名のみ)-> Mark directory As
-> Resource Root
。
再コンパイルして喜んでください:Pこれがあなたのためにうまくいくことを願っています〜
Intellij Ideaを使用する場合:Settings -> Compiler -> Resource patterns
。
この設定には、リソースとして解釈される必要のあるすべての拡張機能が含まれています。ここで拡張機能がどのパターンにも準拠していない場合、class.getResourceはこの拡張機能を使用するリソースに対してnullを返します。
プロジェクトがMavenプロジェクトの場合は、ターゲットコードをチェックして、そこに.fxmlファイルが存在するかどうかを確認します。ない場合は、追加してください
<resources>
<resource>
<directory>src/main/Java</directory>
<includes>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
あなたのpom.xmlで
リソースをresources
フォルダーに配置します。
名前の前に1つのスラッシュを付けて使用してください:getClass().getResource("/myfont.ttf");
Intellij IDEA
を使用していて、Maven
プロジェクトを作成した場合は、リソースをresources
フォルダー(intellij自体によってリソースルートとしてマークされている)に配置し、これらのリソースをコンパイル済みアプリのルート。
つまり、/resources/myfont.ttf
は、結果のビルドで/myfont.ttf
に移動します。
したがって、/myfont.ttf
ではなくmyfont.ttf
を介して取得する必要があります。次のように使用します。
getClass().getResource("/myfont.ttf");
他に何も変更する必要はありません。これだけで役に立ちました。
提案に従って、更新された回答。
ステップ1
ステップ2
ステップ-3
ステップ-4
Javaプログラムを再実行すると、動作するはずです。
<---前の回答---->
IntelliJ IDEの[リソース]タブにリソースフォルダーを追加することで、今日同様の問題を修正
お役に立てれば。また、 詳細チュートリアル 。