BUG描述:
在启动SpringCloudApp时服务器报错:Unable to start embedded Tomca
或者报错java.lang.ClassNotFoundException: javax.xml.bind.JAXBException
BUG解释:
这个bug只报错启动失败,没有说明原因,我在调整了自己的JDK版本后也没有什么改变,
后来想到之前有解决过第二种报错下的BUG,就按照后者的解决方案处理了一下,服务正常启动了,
这个BUG的原理是:
java9及以上版本取消了jaxb-api的自动加载,把它放在外面去了,如果我们用高版本的java运行低版本的服务就会出现加载不到这个类的情况,所以解决方法是把这个API给依赖进来。
解决代码
在依赖中加入以下坐标即可
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-impl</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-core</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>javax.activation</groupId>
<artifactId>activation</artifactId>
<version>1.1.1</version>