2

私はEclipseのJavaプロジェクトに次のような構造を持っています:

  • src/com/myprogram/.../foo.java
  • res/icon.png
  • 。事業
  • ...

jar内から画像をロードできることを知っています

ImageIO.read(getClass().getResource("/res/icon.png"));

res フォルダーが src フォルダー内にないため (おそらく) eclipse でアプリケーションを直接実行しようとすると、問題が発生しますnull URL。. また、ソース コード用とリソース用に別のフォルダーを用意したいと考えています。

また、私が見つけたのは、resフォルダーをEclipseのクラスパスに追加できるため、次のようにロードできることです。

URL url = getClass().getResource("/res/icon.png");
if (url == null)
    url = getClass().getResource("/icon.png");
ImageIO.read(url);

しかし、これは開発時にのみ必要なコードを追加するものであり、私はこのようなことは好きではありません (コードはできるだけクリーンで最終的なものにする必要があります)。

アイコンが同じコードの両方のメソッドで読み取られるようにすることはできますか?

4

2 に答える 2

4

プロジェクトにフォルダーを作成し、それをEclipseのソースフォルダーとしてマークし、フォルダーを下resourcesに置き、非Eclipseビルドがjarの下にあるすべてのものをutsするようにします。次に、を使用してアイコンをロードしますresresourcesresources

getClass().getResource("/res/icon.png")

あなたの問題は、Eclipse以外のビルドがresjarファイルに入れているという事実によって引き起こされていますが、Eclipseはコンテンツresターゲットディレクトリに入れています。

于 2013-06-13T11:40:01.293 に答える
0

res フォルダーをソース フォルダーとしてマークする必要があります (プロジェクト プロパティ > ソース > フォルダーの追加)。

このフォルダー内のすべてがクラスパスで利用可能になります。

于 2013-06-13T11:39:30.853 に答える