我正在开发一个maven项目,需要播放一个.wav文件来伴随桌面提醒。我已经测试了.wav文件,以确保它可以正常工作。我已将其导入到我的项目结构中,当它在源目录中时,它是46 KB。当我在项目上执行mvn clean install时,生成的目标目录包含.wav文件,但它是87 kb。
这是我得到的错误: javax.sound.sampled.UnsupportedAudioFileException:无法从输入文件中获取音频输入流
我输入了一个日志语句来检查log4j日志中生成的路径,路径是否正确。这让我觉得mvn clean install正在修改.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();
有什么想法吗?提前谢谢!
答案 0 :(得分:2)
您可能已将wav文件放在由Maven(变量替换)过滤的目录中。
解决方案:将二进制文件放在一个未过滤的目录中。
在我的项目中,我开始有2个资源目录:
您可以在此处查看我正在使用的POM文件作为父POM,以了解如何配置它: http://search.maven.org/remotecontent?filepath=org/softsmithy/softsmithy-parent/2.2/softsmithy-parent-2.2.pom
或者,如果您愿意,也可以将它用作您自己的父POM的父级:
<parent>
<groupId>org.softsmithy</groupId>
<artifactId>softsmithy-parent</artifactId>
<version>2.2</version>
</parent>
像这样,您将获得资源配置以及更多开箱即用的功能。
确保在父POM中覆盖alle项目特定设置。
您可以通过运行mvn help:effective-pom
来查看此内容。