我正在制作一个测试程序,用于在jar中进行资源加载,并且遇到问题。访问JAR中的资源
我读过你应该使用ClassLoader
或者getClass()
来访问jar中的文件。由于我用来加载资源的方法是静态的,因此我使用了ClassLoader.getSystemResource(String path)
。 我的程序找到了该文件,但表示路径包含文件名或目录名的无效语法。这是我用来加载我的资源的代码:
String path = ClassLoader.getSystemResource(file).getPath();
System.out.println(path);
try {
wave = WaveData.create(new BufferedInputStream(new FileInputStream(path)));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
AL10.alBufferData(buffers.get(i), wave.format, wave.data, wave.samplerate);
wave.dispose();
是的,我正在加载OpenAL的声音文件。
无论如何,我应该提醒你,它实际上找到的文件,但路径有无效的语法。这是路径的一个例子,我是说我在罐子的形式运行它:
文件:\ C:\ Users \用户名\研发\罐\ Test.jar的\声音\ test.wav
我试图删除“!”我仍然得到同样的错误。如果我删除“文件:”它没有找到该文件。请注意,当我在Eclipse中运行时,该程序运行良好。
尝试使用Class.getResourceAsStream而不是 – MadProgrammer
记住,它不需要文件,只需要输入流。 – nitind