You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 06:45:03