Java getResource 在 .jar 文件中不起作用

Java getResource not working in a .jar file

我正在尝试将我从 eclipse 制作的 pacman 游戏导出到 .jar 包。问题是,虽然在 eclipse 上一切运行良好,但当导出 .jar 时,我使用的资源无法正确加载。我将它们放在构建路径上的单独 /res folder 中。我通过以下方式访问它们:

ClassLoader classLoader = getClass().getClassLoader();
    try{
         image = ImageIO.read(new File(classLoader.getResource("images/PM0.gif").getFile()));
    }
    catch (IOException e1) {
        e1.printStackTrace();

    }

File file = new File(classLoader.getResource("levels/"+fileName).getFile());

我做错了什么?here 是我遇到的错误示例(仅在 eclipse 上导出的 .jar 中运行良好)

为了从放置在 jar 中的资源中检索,您需要使用 getResourceAsStream()

它在 eclipse 上工作,因为运行时环境是使用 "unpacked" JAR(或更好地预打包)使用实际文件执行的。

使用资源时,您应该始终将它们作为流而不是文件(除非您正在尝试做一些非常奇怪的事情)。

尝试以下操作:

ImageIO.read(classLoader.getResourceAsStream("images/PM0.gif"))