Java 目标文件夹中的.wav文件在mvn干净安装后修改,赢得';我打得不好
我在一个maven项目上工作,需要播放一个.wav文件来伴随桌面警报。我已经单独测试了.wav文件,以确保它能够正常工作。我已经将它导入到我的项目结构中,当它位于源目录中时,它是46KB。当我在项目上执行mvn clean install时,生成的目标目录包含.wav文件,但其中有87 kb 这是我得到的错误: javax.sound.sampled.unsupportDaudioFileException:无法从输入文件获取音频输入流 我在log4j日志中加入了一个logging语句来检查生成的路径,并且该路径是正确的。这让我觉得mvn clean安装正在修改.wav文件的格式或内容,但我不明白如何以及最终如何防止这种情况发生 更新 以下是一段代码片段: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语句来检查生成
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:未筛选
<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可以简单地排除二进制扩展。