背景:客户服务器因为说jdk要收费,所以要求将jdk1.8替换为openJdk,本地测试ok,则将服务器的jdk替换为openJdk8,出现一个登录异常,调查发现是一个sso登录的问题(单点登录),需要调用一个客户的sso登录接口,该接口是一个https方式的请求认证用户信息。
本着版本对应的原则,使用openJdk8替换原使用的jdk1.8(最终使用的是openJdk11)
- 日志出现:Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty
问题原因:
openjdk8没有ssl支持的相关证书包,导致使用HTPPS调用第三方接口时候报错误 InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty
解决办法:
- 下载高版本的openJdk,替换jre下面的cert证书
**********实践后,不可行******
- 使用高版本的openJdk,本次使用的是oepnJdk11
使用过程中遇到的问题,编译报错:
java.lang.ClassNotFoundException:javax.xml.bind.JAXBException
问题分析:
JAXB API被认为是Java EE API,因此不再包含在Java SE 9中的默认类路径中。在Java 11中,它们已从JDK中删除。要解决此问题,需要手动引入。
解决办法:
手动引入该部分依赖
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.2.11</version>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-core</artifactId>
<version>2.2.11</version>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-impl</artifactId>
<version>2.2.11</version>
</dependency>
<dependency>
<groupId>javax.activation</groupId>
<artifactId>activation</artifactId>
<version>1.1.1</version>
</dependency>
重新编译,打包,部署,问题解决