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

Java加载src目录wav音频报FileNotFoundException问题求助

问题原因
  • 使用new File("noise.wav")读取文件时,Java会直接从程序启动的工作目录(即运行java命令时所在的磁盘目录)查找独立的磁盘文件,既不会去源码src目录搜索,也无法读取jar包内部打包的压缩资源。
  • 你把noise.wav放在src目录下,构建项目时该文件会随编译后的class文件一起放入classpath路径,最终被打包进jar文件。这类内置在程序包内的资源不存在独立的磁盘路径,File类根本无法定位到它,这既是你开发阶段运行就报文件不存在的原因,也是如果不改逻辑后续打包后必然无法播放的核心问题。

audio file in src folder

修复方法

只需要替换音频读取的代码逻辑,改用类加载器读取classpath下的资源流即可,该方式同时兼容开发环境运行和jar包内资源读取:

  1. 删除原有基于File读取音频的两行代码
  2. 替换为如下代码,直接从classpath获取音频输入流:
// 读取classpath根路径下的noise.wav资源
AudioInputStream audioStream = AudioSystem.getAudioInputStream(
        Main.class.getClassLoader().getResourceAsStream("noise.wav")
);

注意事项

  • 确认IDE的构建规则没有过滤.wav后缀的资源文件:主流Java IDE默认会将src目录下非.java后缀的文件一并复制到编译输出目录,你当前把wav放在src根目录的存放方式不需要额外调整目录结构。
  • 资源路径不要加前置斜杠,"noise.wav"就对应classpath根目录的文件,和你当前的文件存放位置完全匹配。
  • 如果后续把音频文件移到src下的子目录,比如src/audio/noise.wav,只需要把路径改成"audio/noise.wav"即可。

修改后核心代码片段(仅替换音频读取部分,其余Swing逻辑不需要改动):

public static void main(String[] args) throws UnsupportedAudioFileException, IOException, LineUnavailableException {
    // 替换原File读取逻辑,支持jar包内资源读取
    AudioInputStream audioStream = AudioSystem.getAudioInputStream(
            Main.class.getClassLoader().getResourceAsStream("noise.wav")
    );
    clip = AudioSystem.getClip();
    clip.open(audioStream);

    // 原有Swing初始化逻辑保持不变
    frame = new JFrame("times killed");
    panel = new JPanel();
    frame.setSize(420,420);
    frame.add(panel);
    panel.setLayout(null);

    bText = new JLabel("Times killed:");
    bText.setBounds(150,130,120,25);
    panel.add(bText);

    damn = new JLabel("0");
    damn.setBounds(210,158,120,25);
    panel.add(damn);

    button = new JButton("Lmao you bad");
    button.setBounds(140,190,150,25);
    button.addActionListener(new Main());
    panel.add(button);

    frame.setVisible(true);
    // 建议补上关闭窗口退出程序的逻辑,避免进程残留
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

小提示:原代码没有设置窗口关闭操作,点击窗口叉号后程序进程会在后台持续运行,补上上述代码里的关闭逻辑即可避免这个问题。


内容的提问来源于stack exchange,提问作者alexM

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 02:24:21