Swing/ClassLoader のバックアップ(No.2)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- Swing/ClassLoader へ行く。
- 1 (2006-05-22 (月) 09:59:23)
- 2 (2006-05-22 (月) 11:58:24)
- 3 (2006-05-23 (火) 20:41:39)
- 4 (2006-06-06 (火) 18:01:11)
- 5 (2007-07-20 (金) 10:27:44)
- 6 (2007-11-14 (水) 02:47:21)
- 7 (2007-11-14 (水) 03:47:45)
- 8 (2008-02-15 (金) 17:56:30)
- 9 (2009-03-03 (火) 15:12:09)
- 10 (2009-08-18 (火) 20:31:26)
- 11 (2010-01-08 (金) 19:09:42)
- 12 (2011-04-21 (木) 13:22:22)
- 13 (2011-04-22 (金) 17:37:46)
- 14 (2012-03-02 (金) 14:04:06)
- 15 (2012-03-05 (月) 16:19:20)
- 16 (2012-03-22 (木) 16:26:09)
- 17 (2013-03-07 (木) 15:40:39)
- 18 (2014-02-25 (火) 14:47:46)
- 19 (2014-09-01 (月) 04:10:53)
- 20 (2014-09-29 (月) 17:50:02)
- 21 (2014-12-02 (火) 16:06:01)
- 22 (2016-03-03 (木) 17:54:39)
- 23 (2017-02-09 (木) 18:26:35)
- 24 (2017-12-27 (水) 18:30:48)
- 25 (2018-02-27 (火) 14:30:40)
- 26 (2019-07-04 (木) 15:06:37)
- 27 (2021-03-30 (火) 11:07:32)
TITLE:ClassLoaderでリソースのURLを取得
ClassLoaderでリソースのURLを取得
編集者:Terai Atsuhiro
作成日:2006-05-22
更新日:2021-03-30 (火) 11:07:32
概要
リソースをクラスパス相対パスで指定し、ClassLoaderを使ってURLを取得します。
#screenshot
サンプルコード
URL url = getClass().getClassLoader().getResource("example/test.png"); //URL url = getClass().getResource("test.png"); JLabel icon = new JLabel(new ImageIcon(url)); JLabel path = new JLabel(url.toString());
- &jnlp;
- &jar;
- &zip;
解説
ClassLoaderを使用した場合、クラスパスからの相対パスでリソースを指定することができます。
例えば、.\target\classes\example\test.pngにある画像ファイルのURLを相対パスで取得する場合を考えます。
上記のサンプルを添付のバッチファイルから実行したときのクラスパスは、以下のように設定されています。
java -classpath ".\target\classes" example.MainPanel
ClassLoader#getResourceメソッドを使用する場合は、以下のようにクラスパスからの相対パス(/区切り)を引数にします。
getClass().getClassLoader().getResource("example/test.png"); //getClass().getClassLoader().getResource("./example/test.png"); //だとjar内にパッケージした時うまくいかない。
ClassLoaderからでは無く、Class#getResourceメソッドを使う場合、modified_package_name(このサンプルではパッケージのexampleにあたる)が補完されるので、以下のように指定します。
getClass().getResource("test.png");
どちらを使用しても取得できるURLは同じになります。また、上記のように、相対パスで指定しておけば、ファイルがjar内にあっても、Web上でも、ローカルディレクトリの中にあってもURLを取得することができます。