前言:
在工作中,遇到类似的异常信息:
java.security.InvalidKeyException: Public key presented not for certificate signature
.............
java.security.NoSuchAlgorithmException: Cannot find any provider supporting RSA/ECB/PKCS1Padding
.............
在网上找到了很多处理方法,其中主要的就是修改jdk,jre的相关文件,但是依然得不到解决,同时,也发现好多人和我一样,无法解决该问题,在经过了长时间各种尝试之后,发现了一个能够解决本人解决该问题的方法,或许能够帮助那些修改了jdk或jre里 lib/security目录下java.security文件(增加了security.provider.6=org.bouncycastle.jce.provider.BouncyCastleProvider 设置)的人.
话归正题, 工作中,开发环境是jdk5.0 +myeclipse5.0A +tomcat 5.2.3.
在调试过程中,对于此类问题,网上的解决方法通常是将bcprov-jdk14- 137.jar(样例,版本随jdk等改变)拷贝到 jdk/jre和jre下的security目录下,然后修改java.security配置,添加类似security.provider.number=org.bouncycastle.jce.provider.BouncyCastleProvider,其中number为相关编号,在jdk1.4中为6,1.5至少为7拉.
但是这样做了,还是不成,后来查看java.properties,发现,在eclipse中使用main方法调试时,使用的是jdk下的jre的包,而在运行时,则是使用的jre下的,在本地调试没有问题的,所以我将eclipse中的Debug和Run时的 ClassPath.Bootstrap Entries调整为jre下的相应包,则异常问题不再出现.
究其原因,估计是编译环境与实际运行环境不一致,jdk与jre有些地方不一致导致此类问题的出现.希望此文能给出现类似问题的人以帮助.