我有一个使用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 config /
config / Images.class
core /
core / LevelLoader.class
core / TextureHelper.class
core / TileSet.class
- 解决其他一些与此无关的事情 -
res /
res / ResPlaceholder.class
res / BlankImg.png
res / test.txt
res / testImg.png
RES / testTiles.png
答案 0 :(得分:3)
如果路径字符串类似于:/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的图像资源并将其显示在选项窗格中,就像我上面的小代码一样。我会尽量避免长线,而是将每一步分开在自己的线上,再次类似于我上面的帖子。这样,如果抛出异常,该行上的代码将更多地提供有关导致错误的信息。