Maven在构建期间拷贝到Java资源目录时损坏WAV文件

问题描述:

我有一个小型Maven Java项目需要播放WAV文件,因此我宁愿将文件简单地放入src/main/resources/*文件夹以简化。但是,如果再放入Maven的资源目录的正常工作正在从使用AudioSystem.getAudioInputStream(...)磁盘加载同样的WAV文件,该程序引发RIFFInvalidDataException的一个实例:Maven在构建期间拷贝到Java资源目录时损坏WAV文件

com.sun.media.sound.RIFFInvalidDataException: Chunk size too big 
    at com.sun.media.sound.RIFFReader.<init>(RIFFReader.java:82) 
at com.sun.media.sound.WaveFloatFileReader.internal_getAudioFileFormat(WaveFloatFileReader.java:65) 
    at com.sun.media.sound.WaveFloatFileReader.getAudioFileFormat(WaveFloatFileReader.java:55) 
    at com.sun.media.sound.WaveFloatFileReader.getAudioInputStream(WaveFloatFileReader.java:117) 
    at javax.sound.sampled.AudioSystem.getAudioInputStream(AudioSystem.java:1113) 
    at se.kth.speech.coin.tangrams.TangramsClient.playSound(TangramsClient.java:276) 
    at se.kth.speech.coin.tangrams.TangramsClient.signalGameStart(TangramsClient.java:335) 
    ... 17 more 

而且,如果我用VLC来尝试打开WAV文件在$PROJECT/target/classes/org/coolproject/audio/,程序实际崩溃;原始文件的处理没有任何问题

Maven用我的音频文件做什么?我使用嵌入在Eclipse Neon.3 v4.6.3(build 20170314-1500)中的3.3.9/1.7.0.20160603-1931版本,但不幸的是无法尝试使用Eclipse之外的“正确”Maven实例构建项目,因为构建依赖于a nightmare hybrid of an old Eclipse project including both Java source and pre-compiled DLLs and a Java-only Maven project

+1

可能需要'pom.xml'才能看到发生了什么。 –

您可能有过滤有副作用。按照资源插件的文档,你可以这样禁用过滤:

<project> 
... 
<build> 
    ... 
    <resources> 
    <resource> 
     <directory>src/main/resources</directory> 
     <filtering>false</filtering> 
    </resource> 
    ... 
    </resources> 
    ... 
</build> 
... 
</project> 

要查看文档,看here

这可能是因为Maven的资源插件过滤自己的.wav文件时,它被复制到目标目录。退房https://maven.apache.org/plugins/maven-resources-plugin/examples/filter.html。您可能需要添加一个排除项,以确保没有对该特定文件进行筛选。