我似乎找不到路径和类与ClassLoader的正确组合。
这是我的项目的目录结构:

  • build / classes / project / MainClass.class
  • build / classes / resources / images / an_image.png
  • build / classes / resources / ImageLoader.class

  • ImageLoader的源如下:
    public class ImageLoader {
    
     public ImageLoader(){...}
    
     public BufferedImage loadImage(String fileName) {
         String loc = "resources" + File.separator + "images" + File.separator;
         URL imgURL = this.getClass().getResource(loc + fileName);
         BufferedImage img = null;
            try {
               img = ImageIO.read(imgURL);
            } catch (IOException e) {...}
            return img;
         }
      }
    

    我不完全知道那和this.getClass().getClassLoader().getResource()之间的区别是什么,但是我已经尝试了各种路径组合,但是我似乎无法获得.jar来查找和加载资源。

    我要去哪里错了?

    谢谢。

    最佳答案

    不要使用File.separator获取资源,它应该始终为'/'。可能还需要添加一个前导“/”来指示可以从类路径结构的“顶部”找到资源(与试图加载资源的类的子目录相反)。

    10-07 19:15
    查看更多