我有一个小型的Maven Java项目,它需要播放一个WAV文件,所以为了简单起见,我更愿意将该文件放入src/main/resources/*文件夹中。但是,如果使用AudioSystem.getAudioInputStream(...)从磁盘加载的相同的WAV文件被放入Maven资源目录中,程序将抛出RIFFInvalidDataException的一个实例:
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到底在用我的音频文件做什么?我使用的是嵌入在EclipseNeon.3 v4.6.3 (build 20170314-1500)中的3.3.9/1.7.0.201603-1931版本,不幸的是,由于构建依赖于旧Eclipse项目的噩梦式混合,包括Java源代码和预编译DLL以及纯Java的Maven项目。,所以无法尝试使用Eclipse之外的“适当”Maven实例构建项目。
发布于 2017-06-02 15:35:16
你可能有副作用的过滤。根据资源插件的文档,您可以像这样禁用过滤:
<project>
...
<build>
...
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>false</filtering>
</resource>
...
</resources>
...
</build>
...
</project>要查看文档,请查看这里
发布于 2017-06-02 15:37:26
可能是maven资源插件在将.wav文件复制到目标目录时对其进行过滤。看看https://maven.apache.org/plugins/maven-resources-plugin/examples/filter.html。您可能需要添加一个排除,以确保不对该特定文件执行过滤操作。
https://stackoverflow.com/questions/44332374
复制相似问题