3

これはおそらく IDE 固有のものです。しかし、Eclipse では、クラスとリソースをもう少し整理することに興味があります。

私が理解しているように、デフォルトの「src」ディレクトリは、すべてのリソースを投入する場所です。リソースがそこにある場合は、次のように参照できます。

ImageIcon icon = new ImageIcon("src/icon-16x16.png");

アイコン専用のディレクトリ (src/ ディレクトリ内) を作成する場合は、次のようにパスを変更するだけです。

ImageIcon icon = new ImageIcon("src/icons/icon-16x16.png");

そのため、src/ ディレクトリの外にリソース用の別のディレクトリを作成したいと考えています。

ここに私の古い構造があります:

prj.HelloWorld  (project)
-> src/ .........
-> src/images/ ........
-> src/ (default package) ......classes.java

これが私がクリーンアップしたものです:

prj.HelloWorld  (project)
-> classes/ .........
-> images/ ........
-> media / ........

今、私は専用のプロジェクト ( prj.Resources ) を使用することに興味があります。これは、すべてのプロジェクトで共有できる共通のリソースのためだけです。

prj.Resources  (project)
-> global_classes/ .........
-> global_images/ ........
-> global_media / ........

prj.HelloWorld  (project)
-> classes/ .........
-> images/ ........
-> media / ........

次に、prj.Resourcesを Java ビルド パス内の [プロジェクト] タブに追加して、 prj.HelloWorldを変更します。

(prj.HelloWorld > プロパティ > Java ビルド パス > [プロジェクト] タブ > 追加...)

これまでのところ、prj.Resources/global_classes/内のすべてのクラスが正常に検出されています。

しかし、global_images 内の画像はそうではありません。

ImageIcon icon0 = new ImageIcon("global_images/icon.png");

さまざまなプロジェクトにあるリソースを使用できることはわかっていますが、ここには明らかな何かが欠けています。

4

3 に答える 3

1

HelloWorld プロジェクトのルート フォルダーにないため、global_images フォルダーにアクセスできません。

ただし、そのプロジェクト リソース フォルダーを示す相対パスを指定できます。

      ImageIcon icon0 = new ImageIcon("../Resources/global_images/icon.png");

パス情報

于 2012-12-18T23:05:35.680 に答える
1

Mavenビルド インフラストラクチャを使用できます。優れた日食統合があります。

Maven は頻繁に使用されます。Maven は、ディレクトリ ツリーなどのベスト プラクティス / 規則を使用します。

ライブラリの依存関係の管理を行い、多くのビルド ツールを提供します。

  • src/main/java - Java ソース
  • src/main/resources - たとえば画像リソース
  • src/main/webapp - Web アプリケーションのルート ディレクトリ
  • src/test/java - junit テスト
  • src/test/resources - テスト リソース
  • ターゲット - ビルド ディレクトリ

マルチモジュール プロジェクト、親プロジェクト、親の依存バージョン管理の継承などの機能があります。

于 2012-12-18T23:32:26.150 に答える
0

URLからImageIconを構築する方法と、コンパイルされた.classファイルの場所に関連するURLを見つける方法について説明します。.javaファイル以外のものはすべてEclipseによって自動的に出力フォルダーにコピーされるため、画像もそこに移動します。このようにすることで、Javaビルドパスがそれらの関係を正しく示している限り、プログラムが.jarファイルにパッケージ化されているかどうか、および異なるプロジェクトにあるかどうかに関係なく、プログラムが機能し続けることができます(これは、 Class#getResource()によって検索されるランタイムクラスパス。

于 2012-12-19T03:17:08.833 に答える