Java 目标文件夹中的.wav文件在mvn干净安装后修改,赢得';我打得不好

Java 目标文件夹中的.wav文件在mvn干净安装后修改,赢得';我打得不好,java,maven,wav,Java,Maven,Wav,我在一个maven项目上工作,需要播放一个.wav文件来伴随桌面警报。我已经单独测试了.wav文件,以确保它能够正常工作。我已经将它导入到我的项目结构中,当它位于源目录中时,它是46KB。当我在项目上执行mvn clean install时,生成的目标目录包含.wav文件,但其中有87 kb 这是我得到的错误: javax.sound.sampled.unsupportDaudioFileException:无法从输入文件获取音频输入流 我在log4j日志中加入了一个logging语句来检查生成

我在一个maven项目上工作,需要播放一个.wav文件来伴随桌面警报。我已经单独测试了.wav文件,以确保它能够正常工作。我已经将它导入到我的项目结构中,当它位于源目录中时,它是46KB。当我在项目上执行mvn clean install时,生成的目标目录包含.wav文件,但其中有87 kb

这是我得到的错误: javax.sound.sampled.unsupportDaudioFileException:无法从输入文件获取音频输入流

我在log4j日志中加入了一个logging语句来检查生成的路径,并且该路径是正确的。这让我觉得mvn clean安装正在修改.wav文件的格式或内容,但我不明白如何以及最终如何防止这种情况发生

更新

以下是一段代码片段:

String filename = this.getClass().getResource("/audio/affirmative.wav").getPath();

logger.debug("wav file path: " + filename);

AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(new File(filename).getAbsoluteFile());

Clip clip = AudioSystem.getClip();
clip.open(audioInputStream);
clip.start();

有什么想法吗?提前谢谢

您可能已将wav文件放在一个目录中,该目录由Maven(变量替换)过滤

解决方案:将二进制文件放在一个不会被过滤的目录中

在我的项目中,我开始有两个资源目录:

  • src/main/resources:已筛选
  • src/main/resources bin:未筛选
您可以查看我在此处用作父POM的POM文件,了解如何配置此文件:

或者,如果您愿意,您也可以将其用作您自己的父POM的父POM:

<parent>
    <groupId>org.softsmithy</groupId>
    <artifactId>softsmithy-parent</artifactId>
    <version>2.2</version>
</parent>

org.softsmithy
软匠父母
2.2
像这样,您将获得资源配置和更多的开箱即用

不过,请确保覆盖父POM中所有特定于项目的设置


您可以通过运行
mvn help:effective pom

Wild guess来检查这一点:它使用某种
InputStreamReader
或诸如此类的方式将其读取为文本…您将wav存储在哪里
src/main/resources
?这正是它的存储位置,我可以这样做。如果
maven资源插件是罪魁祸首(第二种猜测)。Op可以简单地排除二进制扩展。