2

jar からイメージをロードしようとしています。しかし、getResource() にどのような文字列を指定しても、常に null が返されます。

try {
    System.out.println(Bootstrapper.class.getResource("./img/logo.png").toURI().getPath());
} catch (URISyntaxException ex) {
    Logger.getLogger(CrawlerFrame.class.getName()).log(Level.SEVERE, null, ex);


   }
   ImageIcon ii = new ImageIcon(Bootstrapper.class.getResource("./img/logo.png"));
   setIconImage(ii.getImage());

net.sharpcode.crawler.ui.CrawlerFrame.(CrawlerFrame.java: 28) net.sharpcode.crawler.Bootstrapper$1.run(Bootstrapper.java:55) で

ここに画像の説明を入力

私はもう試した:

getResource("") 
getResource(".") 
getResource("./") 
getResource("/img/logo.png") 
Bootstrapper.class.getProtectionDomain().getCodeSource().getLocation().getPath()
4

3 に答える 3

5
this.getClass().getResource("/net/sharpcode/crawler/img/logo.png")
于 2012-04-15T14:55:30.003 に答える
2

「./」の部分を取り除きます - ただ使用してください:

Bootstrapper.class.getResource("img/logo.png");

...それは に関連している場合Bootstrapper.classです。img「ディレクトリ」がjarファイルのルートにある場合は、使用します

Bootstrapper.class.getResource("/img/logo.png");
于 2012-04-15T14:46:10.063 に答える
0

スタック トレースから、Bootstrapperクラスがnet.sharpcode.crawlerパッケージにあることがわかります。これは、次のパス./img/logo.pngが に解決されることを意味します/net/sharpcode/crawler/img/logo.png/img最上位のディレクトリだと思うので、絶対パスを使用してください:

Bootstrapper.class.getResource("/img/logo.png")

または経由でロードClassLoader

Bootstrapper.class.getClassLoader().getResource("img/logo.png")
于 2012-04-15T14:46:41.017 に答える