eclipseとjarの両方で動作する方法でリソースを読み込む方法を理解できません。Java classLoaderとgetResourceAsStream
私のプロジェクトでは、1つのソースファイルsrc
があります。 その下で、リソース(イメージ、オーディオ..)をインポートする新しいパッケージを作成しました。 リソースはsrc/resources
、src/com/Mainclass.java
です。
他の回答からわかるように、.class.getResource(); はクラスのディレクトリを探し始めます。 Eclipseからjarファイルを抽出すると、クラスのディレクトリが変更されます。つまり 、唯一のEclipseでを働く
MainClass.class.getResourceAsStream("/resources/img.png")
。 リソースがメインクラスと同じパスにないため、なぜ動作するのかわかりません。代わりに、私たちがcomから行くので、私は../resources/img.pngがうまくいくと思っています。〜src/、リソースは次のとおりです。それでも
、私はその中に見つける瓶、分離として抽出した後:
<root of the jar>/com/mainclass.java
<root of the jar>/src/resources
そしてそれは動作しません。
簡単な解決策は次のとおりです。MainClass.class.getResourceAsStream( "/ resources/img.png")がロードされているディレクトリを見つけるにはどうすればよいですか? 私は/ resources /をすべての単一のサブフォルダに入れてみましたが、それでも動作しません。 IT WILLリソースフォルダがjarと同じフォルダにあり、jarファイル自体の内部にない場合は、eclipseの外で動作します。プロジェクトは、MavenのJavaプロジェクトで、私は外部LIBSを持っていない
:
は、ここに私のビルド・パスです。
:
だから、あなたのコードは、実際のようになります。 Eclipseで使用されるソース/コンパイル済みのレイアウトは、Eclipseの方法(たくさんの)とMavenの方法(少し)を混在させます。 – davidxxx
グローバルに理解するには、https://maven.apache.org/guides/getting-started/を読んでください。 リソース要件については、https://maven.apache.org/plugins/maven-resources-plugin/examples/resource-directoryを参照してください。htmlの – davidxxx