Java 如何正确引用资源?

Java 如何正确引用资源?,java,jar,resources,Java,Jar,Resources,我的项目包含位于项目根目录下路径src/res/sounds中的音频资源。当我在Eclipse中处理它时,运行会起作用,因为项目根目录将是工作目录 然而,我将项目导出到一个可运行的JAR文件中,并尝试从命令行运行它java-JAR。我发现系统无法归档指定的文件错误,因为工作目录现在是我运行命令行的所在目录,并且资源的相对路径不再有效 在我的代码中使用外部资源(稍后将打包到JAR中)的正确方法是什么?如何解决当前问题?假设资源在您的jar文件中(您应该解压缩它并验证它们是否存在): 你可能还想检查

我的项目包含位于项目根目录下路径
src/res/sounds
中的音频资源。当我在Eclipse中处理它时,运行会起作用,因为项目根目录将是工作目录

然而,我将项目导出到一个可运行的JAR文件中,并尝试从命令行运行它
java-JAR
。我发现
系统无法归档指定的文件
错误,因为工作目录现在是我运行命令行的所在目录,并且资源的相对路径不再有效


在我的代码中使用外部资源(稍后将打包到JAR中)的正确方法是什么?如何解决当前问题?

假设资源在您的jar文件中(您应该解压缩它并验证它们是否存在):


你可能还想检查一下你所有的案子。在Eclipse中,它不区分大小写,但当您导出它时,它是区分大小写的。发生在我身上几次请出示一些代码。您正在使用
ClassLoader.getResourceAsStream
?@boristesspider我实际上是在向
beads
音频API的
Sample
类的构造函数发送路径。我假定
src
目录成为类路径的根。所以
/res/sounds…
class Test {
    public static void main(String[] args) {
        final InputStream is = Test.class.getResourceAsStream("/res/sounds/mySound.wav");
        // do something with the inputstream
    }
}