在mvn clean install之后修改的目标文件夹中的.wav文件,将无法正常播放

时间:2013-06-13 20:37:26

标签: java maven wav

我正在开发一个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();

有什么想法吗?提前谢谢!

1 个答案:

答案 0 :(得分:2)

您可能已将wav文件放在由Maven(变量替换)过滤的目录中。

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

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

  • src / main / resources:filtered
  • src / main / resources-bin:未过滤

您可以在此处查看我正在使用的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来查看此内容。