getResourceAsStream()在jar中返回null但在eclipse中很好

我有一个使用LWJGL的Java程序。 它在Eclipse中运行良好,但是当我尝试将其编译为jar文件时,它会崩溃,给我一个NullPointerException。 之前有人问过,我知道,但我似乎没有得到有效的答案。 有什么帮助吗? 提前致谢!

似乎有问题的是TextureHelper类:

public class TextureHelper { public static Texture LoadTexture(String texture) { try { return TextureLoader.getTexture("PNG", ResPlaceholder.class.getResourceAsStream(texture)); } catch (IOException e) { e.printStackTrace(); return null; } } } 

一些说明:

我也试过“/ res /”+纹理,以及许多其他类似的东西。

ResPlaceholder是一个位于res文件夹中的类,用于存储我的所有图像。 这是一个空白的空课。

这在Eclipse中完美运行。

我的jar有这些文件夹(仅作为示例):

foo.jar中

– – 核心

——– TextureLoader

—- RES

——–什锦图像文件

——– ResPlaceholder

这与eclipse中的包相同。

如果你有任何帮助,我会很感激,我已经坚持了好几天没有进展。

编辑:

META-INF / MANIFEST.MF

Main.class配置/

配置/ Images.class

核心/

核心/ LevelLoader.class

核心/ TextureHelper.class

核心/ TileSet.class

– 解除与此无关的其他一些事情 –

RES /

RES / ResPlaceholder.class

RES / BlankImg.png

RES /的test.txt

RES / testImg.png

RES / testTiles.png

如果路径String类似于: /res/testImg.png它应该工作。

 String resourcePath = "/res/testImg.png"; InputStream inStream = ResPlaceholder.class.getResourceAsStream(resourcePath ); BufferedImage img = ImageIO.read(inStream); // use the img BufferedImage here // for example: ImageIcon icon = new ImageIcon(img); JOptionPane.showMessageDialog(null, icon); 

顺便说一句,在小型测试程序中测试问题并检查新概念总是好的。 在你的情况下,我将创建一个简单的小程序,只有一个主方法,试图提取jar的图像资源并将其显示在选项窗格中,就像我上面的小代码一样。 我会尽量避免长线,而是将每一步分开在自己的线上,再次类似于我上面的post。 这样,如果抛出exception,该行上的代码将更多地提供有关导致错误的信息。