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。
您可能有过滤有副作用。按照资源插件的文档,你可以这样禁用过滤:
<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。您可能需要添加一个排除项,以确保没有对该特定文件进行筛选。
可能需要'pom.xml'才能看到发生了什么。 –