服务器迁移,在新服务器上发现邮件发送或者使用httpClient会报出下面的异常,问题可谓是惊人的相似。
javaMail发送邮件异常:
使用httpClient异常:
先开始排查问题。
检查了服务网略策略的都没问题,代码什么的都没有问题,在本地跑起来都能正常使用。
当以上都没有问题时,这个问题一般都是JDK惹出来的。
我项目使用的jdk版本为1.7。
度娘上可以找到一些类似问题的解决办法,一般有两种。但这两种都没有解决我们的问题,第三种才真正解决了。先来看看前两种解决办法,有的环境问题,前两种也可以解决。
第一种:
找到jdk中的j,.../jre/lib/security文件夹中的java.security文件,并设置
security.provider.1=com.sun.crypto.provider.SunJCE
security.provider.2=sun.security.provider.Sun
security.provider.3=sun.security.rsa.SunRsaSign
security.provider.4=sun.security.ec.SunEC
security.provider.5=com.sun.net.ssl.internal.ssl.Provider
security.provider.6=sun.security.jgss.SunProvider
security.provider.7=com.sun.security.sasl.Provider
security.provider.8=org.jcp.xml.dsig.internal.dom.XMLDSigRI
security.provider.9=sun.security.smartcardio.SunPCSC
保存之后,重启服务,看看问题是否能解决。如果不能再看第二种。
第二种:
再搜索 从官网上下载 并替换security下 local_policy.jar 和 US_export_policy.jar
这里注意jdk的版本不同这两个文件的位置有所变动,有可能在security/policy文件中。
替换完成之后,重新启动服务,看看问题是否能解决。如果不能请看第三种。
第三种:
自己摸索了很久,与本地jdk对比发现服务器的JRE的lib/ext扩展文件下少了几个jar包。我这里的jdk是少了两个。
于是把缺少的jar都复制到服务器上对应的文件内。
新增好之后,重启服务,看看能否解决。
如果还不能解决,那......。
目前还没发现第四种方法,如果发现后续再补充。
标签:java,constructing,jdk,sun,jar,ssl,provider,security From: https://www.cnblogs.com/zhizhixiaoxia/p/17125973.html