web-dev-qa-db-ja.com

リソース(画像、サウンドビットなど)をJavaプロジェクトに埋め込み、それらのリソースを使用する

リソースをJavaプロジェクト(Eclipse v3.6.0を使用)に埋め込み、次にその埋め込みリソースをコントロール(例:JLabel)内で使用する方法を探しました。Iファイルシステムからリソースを参照する方法を見てきました。プロジェクトが開発されたら、アプリケーションを実行可能ファイルとして公開します。これらの実行可能ファイルは、Windows、* NIX、およびLinuxプラットフォームに展開/起動されることに注意してください。

これはVisual Studioの世界で実行できることはわかっていますが、Java/Eclipse IDEでこれを実行する方法にはあまり慣れていません。余談ですが、Eclipseを起動してプロジェクトを実行可能ファイルとして作成するにはどうすればよいですか?

どんな助けでも大歓迎です。

マーク

更新1:

BalusCの応答 に基づいて、問題を解決するために必要なコードを共有したいと思いました。私のクラスは "Viking.Test"のパッケージの下にあり、次にパッケージを "Viking.Test.Resources"の下に配置しました。これはすべて、Eclipse内で行われ、イメージをプロジェクトにインポートします。

  1. インポートソースのProject-> Import-> General/File Systemを右クリックして画像をインポートしました。
  2. インポートする画像を含むフォルダを選択しました
  3. 'Into folder'パラメータに "Project/src/Viking/Test/Resources"を選択しました
  4. オプションを変更せず、クリックした「終了」

ソースファイルで、画像をJLabelLblLogo)に挿入する次のコードを追加しました

try
{
  ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
  InputStream input = classLoader.getResourceAsStream(
    "Viking/Test/Resources/MyImage.jpg");
  Image logo = ImageIO.read(input);
  LblLogo = new JLabel( new ImageIcon( logo ) );
  LblLogo.setBounds(20, 11, 210, 93);
  getContentPane().add(LblLogo);
}
catch ( IOException e ) {  }
29
lordhog

これらのリソースをソース/パッケージ構造に配置し、 ClassLoader#getResource() または getResourceAsStream() を使用して、URLまたはInputStreamとして取得します。完全修飾パッケージパスによるクラスパス。

ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
InputStream input = classLoader.getResourceAsStream("/image.gif");
// ...

または、現在のクラスと同じパッケージにある場合は、次のようにして取得することもできます。

InputStream input = getClass().getResourceAsStream("image.gif");

余談ですが、Eclipseでプロジェクトを実行可能ファイルとして作成して、起動できるようにする方法を教えてください。

Rightclick Java Project> Export> Runnable JAR File

17
BalusC