2

ローカル ディレクトリから ImageIcon(URL) に画像をロードしようとしています。この画像ファイルは .jar ファイルからアクセスします。jar ファイル名は swingex.jar です。プロジェクト構造は次のようになります。

F:/>SwingExample
         |
         |___src
         |
         |___build.xml
         |
         |___lib
               |
               |___swingsex.jar(generated through build.xml file)
         |
         |__resource
                   |
                   |_____images
                            |
                            |___logo1.png

logo1.png ファイルの読み方

私はこれを好きにしようとしています

  1. file:///f://resources//images//processedimages//null を返します

  2. ClassLoader.getSystemResource("resources/images/processedimages/");null を返します

更新:- SwingExample で jar ファイルを作成し、resource/images ディレクトリを除外しているため、まだ問題があります。jar ファイルを実行すると、resource/images フォルダーが認識されません。コードは

File directory = new File (".");
Image img = null;
String path="";
URL url=null;
try {
  path=directory.getCanonicalPath()+"/resources/images/logo1.png";
               img = ImageIO.read(new File(getDefaultImageUploadPath());

} catch (IOException e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
}
        return new ImageIcon(img);
4

3 に答える 3

3
URL imgURL =
   new File( "F:/SwingExample/resource/images/logo1.png" ).toURI().toURL();

しかし、リソースをsrcに入れることをお勧めします。

リソースがsrcにある場合は、クラスローダーで簡単にアクセスできます。

getClassLoader().getResourceAsStream( "resource/images/logo1.png" );
于 2013-02-11T19:38:54.857 に答える
1

アプリケーションの実行コンテキストによっては、代わりに相対パスを使用できます

URL imgURL = new File( "resource/images/logo1.png" ).toURI().toURL();

または

URL imgURL = new File( "../resource/images/logo1.png" ).toURI().toURL();

動作する可能性がありますが、Aubin は正しいです。アプリケーション内にイメージを埋め込み、クラス ローダー コンテキストを介してアクセスする方が簡単です。

于 2013-02-11T19:49:58.520 に答える
0

Java プロジェクトの場合、デフォルト ディレクトリは常に src から始まります。以下の方法でリソースを整理する場合にのみ、コードは正常に機能します.... :)

SwingExample
         |
         |___src
         |    |
         |    |_____resource
         |          |
         |          |_____images
         |                   |
         |                   |___logo1.png
         |___build.xml
         |
         |___lib
               |
               |___swingsex.jar(generated through build.xml file)

今回はgetClassLoader().getResourceAsStream( "/resource/images/logo1.png" );nullを返しません。

于 2014-01-16T16:06:45.630 に答える