问题
在对接微信支付需要.p12文件结尾的双向认证证书文件,在跑单测的时候可以在src/main/resources获取到证书文件,但项目打包启动后获取证书文件异常,报以下错误
java.io.IOException: DerInputStream.getLength(): lengthTag=111, too big.
at sun.security.util.DerInputStream.getLength(DerInputStream.java:599)
at sun.security.util.DerValue.init(DerValue.java:365)
at sun.security.util.DerValue.(DerValue.java:320)
at sun.security.pkcs12.PKCS12KeyStore.engineLoad(PKCS12KeyStore.java:1914)
at java.security.KeyStore.load(KeyStore.java:1445)
分析
由于单元测试是可以正常通过,并且项目运行debug发现是有读取到文件流,初步怀疑是证书文件被修改。将证书文件直接放入target目录下,发现可以正常运行。
因此定位异常问题是由于maven-resources-plugin的问题
解决
在pom.xml文件中加入以下配置,过滤后缀为.p12的文件,问题解决
maven-resources-plugin
3.1.0
utf-8
true
p12
cer
pem
pfx
来源:oschina
链接:https://my.oschina.net/wangshuhui/blog/4287986