Java 在JAR中加载图像
目前,我正试图以一种可以说是“JAR友好”的方式加载图像,但我在加载图像时遇到了困难 目前,文件夹的布局如下:Java 在JAR中加载图像,java,image,Java,Image,目前,我正试图以一种可以说是“JAR友好”的方式加载图像,但我在加载图像时遇到了困难 目前,文件夹的布局如下: >src >package.name.etc ImageLoader.java >assets >images >menu background.png 目前,我正在尝试实现以下代码: public Image loadImage(String filename) { Toolkit tk =
>src
>package.name.etc
ImageLoader.java
>assets
>images
>menu
background.png
目前,我正在尝试实现以下代码:
public Image loadImage(String filename) {
Toolkit tk = Toolkit.getDefaultToolkit();
URL url = null;
try {
url = this.getClass().getResource("assets/images/menu/" + filename);
}
catch (Exception e) {
e.printStackTrace();
}
Image i = tk.getImage(url);
return i;
}
在另一种方法中,我尝试加载图像:
Image background = loadImage("background.png");
这只会返回一个空指针异常,说明那里没有图像,我真的不知道如何找到正确的目录使图像工作。谢谢你的帮助
编辑:这是我得到的错误,我不确定我应该从哪里捕捉它
Uncaught error fetching image:
java.lang.NullPointerException
at sun.awt.image.URLImageSource.getConnection(Unknown Source)
at sun.awt.image.URLImageSource.getDecoder(Unknown Source)
at sun.awt.image.InputStreamImageSource.doFetch(Unknown Source)
at sun.awt.image.ImageFetcher.fetchloop(Unknown Source)
at sun.awt.image.ImageFetcher.run(Unknown Source)
为了在jar中包含图像,我完成了以下步骤:
packageName请查看并检查是否需要
资产/图像/菜单/
部分是否使用Maven?能否显示错误的堆栈位置?确保资产文件夹位于类路径中。不要使用Maven。添加了错误。在类路径中?那么我该如何使它保持在当前结构中呢?右键单击eclipse中的图像并选择properties,复制完整的指定路径并尝试使用该路径。严格来说,此解决方案不是必需的:您不必将资产放在调用它们的代码的子文件夹中。尽管我尝试了此方法,但没有更改目录结构,只是将…..getResourceAsStream(“/menu/images/”+filename)放在其中;它从assets文件夹中获取该图像,而无需更改目录。所以它仍然有效。
try {
BufferedImage img =
ImageIO.read(this.getClass().getResourceAsStream("resources/"+filename));
} catch (IOException e) {
e.printStackTrace();
}