tips/JAVA/JAR ファイル内に画像ファイルなどを含める

2008-03-13 (木) 04:12:50 (4284d)

JAR ファイル内に画像ファイルなどを含める

画像ファイルを JAVA プログラム内で使用する場合、 とりあえず使うにはイメージ関連のクラス (Swing なら ImageIcon)のコンストラクタに ファイル名を渡せばよいですが、 この方法だと JAR ファイル化した時に画像ファイルを JAR ファイルに含められません。 (ファイル名指定だとファイルそのものを取得しようとするため)。

この場合、クラスローダーというクラスの getResource というメソッドを使用すれば 画像などのファイルを URL もしくは InputStream の形で取得できます。 クラスローダーは java の実行時に必要なクラスを クラスパスの JAR ファイルからロードするクラスです。 そして getResource メソッドを使用すれば、 クラスファイルを取得するのと同じように JAR ファイルの中の画像を取得できます。

Swing の場合

ClassLoader classLoader = this.getClass().getClassLoader();
URL resUrl = loader.getResource("xxx.gif");
ImageIcon image = new ImageIcon(resUrl);

SWT の場合

Image image;
ClassLoader classLoader = this.getClass().getClassLoader();
InputStream iStream = classLoader.getResourceAsStream("xxx.gif");
if(iStream != null){
    image = new Image(Display.getDefault(), iStream);
}