JWS で jar ファイルに含まれるファイルにアクセスするには
JWS (Java Web Start) で jar ファイルにクラスファイル以外の リソースを含ませる場合、ClassLoader クラスの getResourceAsStream() メソッドを使って
InputStream is = this.getClass().getClassLoader().getResourceAsStream(file);
のようにする。Applet では通常
URL url = new URL(getCodeBase() + file);
InputStream is = url.openStream();
のようにすることが多いが、上のように ClassLoader を使ってもできる。
したがって、Applet と Application と JWS を兼ねるような
プログラムで jar ファイルの中からリソースを呼び出す場合は
ClassLoader を使う方法で統一できる。
ClassLoader ではなく、Class クラスにも getResourceAsStream() メソッドがあるので
InputStream is = this.getClass().getResourceAsStream(file);
としたくなるが、これはアプリケーションでは動くが、JWS ではうまく動かない。
情報源:
- Java Web Start FAQ (Sun)
- Java Web Start : Java Glossary (Canadian Mind Products)
- Web Start F.A.Q. (Lupica)