java - 访问 JAR 内的资源

标签 java eclipse jar resources loading

我正在制作一个用于在 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 的声音文件。

无论如何,我应该提醒您,它确实找到了该文件,但路径的语法无效。这是我以 jar 形式运行时得到的路径示例:

file:\C:\Users\name\development\jars\test.jar!\sounds\test.wav

我尝试删除“!”我仍然遇到同样的错误。如果我删除“文件:”,它找不到该文件。请注意,当我在 Eclipse 中运行时,该程序运行良好。

最佳答案

如果您要从 jar 中获取文件,请使用 getResourceAsStream() 并使用包名称作为路径。

getResourceAsStream("/com/project/resources/sounds/myfile.wav")

关于java - 访问 JAR 内的资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20504014/

相关文章:

javascript - Zk 集成 lightbox.js

java - SaxLoader 中的 Sphinx4 空指针异常

java - Maven:如何处理包含模块的模块?

eclipse - 使用 Eclipse 进行 CQ5 开发

android - R 无法解析为变量 |找不到 [YourAndroiProjectName].apk

jar - android studio 添加 extern jar 库

java - 更改 JTextPane 中显示的 HTMLDocument 的内容

eclipse - 有没有办法使用 Eclipse 从 JPA POJO 生成 JSF 表单?

java - 如何在可执行 JAR 中加载 TestNG 配置?

Java - 正确获取 jar 依赖项