Java播放wav音频提示(No such file or directory)但路径看似正确如何解决
问题原因
- Java 代码中使用的相对路径是相对于程序运行时的工作目录,而非 class 文件存放的 bin 目录。默认运行 Java 项目时工作目录是项目根目录,程序会去
项目根目录/audio/ahem.wav路径下查找文件,自然找不到存放在 bin 目录下的音频。
解决方法
快速验证修复
在playSound方法开头添加一行代码打印当前工作目录:System.out.println(System.getProperty("user.dir"));
运行后查看控制台输出的路径,把存放音频的audio文件夹整个移动到该输出路径下,即可用你现有代码正常读取文件。
更稳妥的资源读取方案
推荐使用类加载器从 classpath 读取资源,只要你的audio文件夹放在 classpath 下(也就是你现在的 bin 目录),不管工作目录怎么变动都能正常读到资源,修改对应代码即可:
将原有代码:
File file = new File("audio/" + name + ".wav"); AudioInputStream stream = AudioSystem.getAudioInputStream(file);
替换为:
AudioInputStream stream = AudioSystem.getAudioInputStream(Music.class.getClassLoader().getResourceAsStream("audio/" + name + ".wav"));
其他注意事项
- 确保音频文件名和你传入的参数大小写完全匹配,Windows 系统不区分大小写,但 macOS、Linux 系统会严格区分大小写,避免因大小写不匹配触发找不到文件的问题。
- 你现有代码中仅休眠 10 毫秒就关闭了音频流,会导致音频刚启动播放就被中断,建议添加播放完成监听后再释放资源,不要提前关闭音频输入流。
内容的提问来源于stack exchange,提问作者juicysnail
相关产品推荐
相关产品推荐

