4

私の最初の質問:

私はこれを数日間理解しようとしてきましたが、忍耐力を失ったところまで来ました。以下は、いくつかのコードと私のプロジェクト構造です。

質問:getResources() jar にインポートされた後、Eclipse で作業するにはどうすればよいですか?

助けてくれてありがとう。

public enum Icons {
    XXX("src/resoruces/icons/xyz.png");
    private ImageIcon icon;
    Icons(String path) {
       try {
           // will fail miserably in eclipse and after exporting to jar
           URL imageURL = getClass().getClassLoader().getResource(path);
           icon = new ImageIcon(imageURL);
       } catch (Exception e) {
           // works like a char in eclipse and after creating the jar file
           // with the files in the same directory
           System.out.println("getResoruce() did not work");
           icon = new ImageIcon(path);
       }
   }

プロジェクトの構造

4

3 に答える 3

11

通常、Eclipse から JAR ファイルをエクスポートする場合、の内容はパス名自体を除いsrc/resourcesエクスポートされます。JAR からイメージをロードするには、次のようにします。src

InputStream stream = getClass().getResourceAsStream("/resources/icons/xyz.png");
ImageIcon icon= new ImageIcon(ImageIO.read(stream));

確実に知る方法の 1 つは、以下を確認することです。

jar tvf yourjar.jar
于 2012-12-31T19:01:26.140 に答える
3

png ファイルが元の src ディレクトリと同じ場所にある JAR にパッケージ化されている場合

XXX("resources/icons/xyz.png");

正しい結果が得られるはずです。

于 2012-12-31T18:25:00.127 に答える
1

srcディレクトリはクラスパスで利用できません

InputStream imageInputStream = getClass().getClassLoader().getResourceAsStream("resources/icons/xyz.png");
byte[] imageData = org.apache.commons.io.IOUtils.toByteArray(in)

ImageIcon imageIcon = new ImageIcon(imageData, "description about image");
于 2012-12-31T18:17:19.347 に答える