我有一个小的Maven Java项目,它需要播放WAV文件,因此,为简单起见,我更喜欢将文件放入src/main/resources/*
文件夹中。但是,如果使用AudioSystem.getAudioInputStream(...)
从磁盘上加载的同一WAV文件然后将其放入Maven Resources目录中,则该程序将抛出RiffinvalidDataeexception的实例:
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尝试在$PROJECT/target/classes/org/coolproject/audio/
上打开WAV文件,则该程序实际上会崩溃。原始文件是没有任何问题的
Maven到底在用我的音频文件做什么?我正在使用3.3.9/1.7.0.0.20160603-1931嵌入到Eclipse Neon.3 v4.6.3(构建20170314-1500(中,不幸的是,无法尝试使用Eclipse以外的"适当" Maven实例来构建该项目,因为建筑物取决于建筑物一个旧日食项目的噩梦混合物,包括Java来源和预编译DLL和仅Java的Maven项目。
您可能具有具有副作用的过滤。根据资源插件的文档,您可以这样禁用过滤:
<project>
...
<build>
...
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>false</filtering>
</resource>
...
</resources>
...
</build>
...
</project>
要查看文档,请在这里查看
可能是Maven Resources插件在复制到目标目录时正在过滤您的.WAV文件。查看https://maven.apache.org/plugins/maven-resources-plugin/examples/filter.html。您可能需要添加排除以确保在该特定文件上没有进行过滤。