维护一个新浪微博同步的代码,发现在Myeclipse 10下,单元测试无法执行。
如下: javax.net.ssl.SSLHandshakeException : sun.security.validator.ValidatorException: PKIX path validation failed: java.security.cert.CertPathValidatorException : basic constraints check failed: pathLenConstraint violated - this cert must be thelast cert in the certification path at com.sun.net.ssl.internal.ssl.Alerts.getSSLException( Alerts.java:174) 同样是https,为什么QQ的就没有问题呢
在新浪开发平台,找到这个:获取accesstoken报错(服务器为https协议),说要 "自定义类继承SSLSocketFactory,调用方法,只要用认证返回的HttpCilent即可",一想,这也不靠谱啊,代码改动量太大。
又找到这个:ERROR: sun.security.validator.ValidatorException: PKIX path validation failed,说"强制httpclient信任任何证书" 。
还有这个:解决开放平台的证书错误:ValidatorException:PKIX path validation failed, 需要自己安装新浪微博的证书 ①:下载微博证书
#openssl s_client -showcerts -connect api.weibo.com:443 >/tmp/weibo.cert ②:编辑微博证书,用任何熟悉的编辑器,去掉weibo.cert文件中BEGIN CERTIFICATE和END CERTIFICATE之外的内容
(注意有三个CERTIFICATE块,去掉第一个BEGIN CERTIFICATE之前和最后一个END CERTIFICATE之后的内容)
③:导入微博证书:
keytool -import -trustcacerts -alias root -file weibo.cert -keystore keystore
试了下表示没成功(我是在windows下,所以直接通过浏览器导入证书)。
------------------------------------------------------------------------------------------------------------------------------------------------------------
然后又找到一个靠谱的帖子:微博同步ValidatorException,同样的问题,说是JDK的bug引起的,升级到jdk 1.6.0_20就不会出现这个问题了。查了一下我的JDK,发现有两个版本,1.7.0_17和1.6.0_13。

那我就将项目的java compiler compliance level设置为1.7,然后碰到了Unsupported major.minor version 51.0 问题。