Java getResource()无法在.jar文件中包含资源

时间:2017-12-14 16:47:45

标签: java jar resources

我知道这个问题已被讨论了数十亿次,但遗憾的是我无法解决这个问题。 我正在尝试加载我的资源文件夹中的图像。当我使用时:

    public static BufferedImage[] readImages() {

       BufferedImage img = null;
       try { 
         img = ImageIO.read(new File("resources/imgs/map.png"));
       } catch (IOException e) {
       }

(参见screenshot)并运行程序,图像按原样加载。但是,当我创建.jar文件并尝试运行它时,不会访问该图像,我收到错误:

  

线程中的异常" main" java.lang.NullPointerException:在。的情况下,src图像为空   java.desktop / java.awt.image.AffineTransformOp.filter(AffineTransformOp.java:214)
  在MyClass.readImages(MyClass.java:100)
  在MyClass.main(MyClass.java:21)

然后我尝试使用getResource()方法,但这并没有加载图像,我得到 NullPointerException 错误。

    public static BufferedImage[] readImages() {

       BufferedImage img = null;
       try { 
         img = ImageIO.read(MyClass.class.getClass().getClassLoader().getResource("resources/imgs/map.png"));
       } catch (IOException e) {
       }
  

线程中的异常" main"显示java.lang.NullPointerException
  在MyClass.readImages(MyClass.java:92)
  在MyClass.main(MyClass.java:21)

有没有人知道如何通过使用"新文件(文件名)"将图像包含到.jar中。或者如何修复NullPointerException?

编辑:我的问题的解决方案是:

img = ImageIO.read(ClassLoader.getSystemClassLoader().getResourceAsStream("map.png"));

map.jpg位于" MyProject / resources / map.jpg"以及" MyProject / src / MyClass.java"中的脚本。

0 个答案:

没有答案