问题已经解决~!
总结由于将一个二进制的文件放在classpath下并且使用了maven-resources-plugin这个插件来拷贝资源文件导致。
详细来说是应为maven-resources-plugin这个插件有一个选项
<filtering>true</filtering>
如果开启那么只要是classpath下要被拷贝的文件默认都会进行替换也就是说将会映射成properties
之后就可以在xml的配置中使用,比如那个jdbc.properties。但是这一个操作对于二进制文件,例如png,gif,pdf等就不合适了。
我们需要将这些文件格式都排除掉。
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.4.3</version>
<configuration>
<encoding>UTF-8</encoding>
<nonFilteredFileExtensions>
<nonFilteredFileExtension>dat</nonFilteredFileExtension>
<nonFilteredFileExtension>swf</nonFilteredFileExtension>
</nonFilteredFileExtensions>
</configuration>
</plugin>
思考过程:
开始走了不少弯路,我以为是因为项目的引用jar包问题,结果查询了很久还是找不到原因。最后我把各个文件的md5求出来才发现在target目录下的文件和resources目录下的不一致,最终发现问题所在。
参考:
Maven Binary filtering
获取classpath下文件的其他方法
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…