Spring Boot项目jdk9运行报错,怎么处理都不行

jdk9与jdk8相比有很大的区别

  • JDK8:JDK8的部署是一个单体模式,即使项目内容少,也需要一整套的JRE环境。
  • JDK9:JDK9引入模块后,能将所有的类组织成模块形式。在新建项目时,不再需要整套的JRE环境。

并且jdk9在发布的时候有一些JDK8中的jar依赖没有集成进去,因此在使用一些版本的Spring Boot项目的时候就会报一些jar包缺失的错误。

org.springframework.context.ApplicationContextException: 
Unable to start embedded container; nested exception is org.springframework.beans.factory.BeanCreationException:
 Error creating bean with name 'tomcatEmbeddedServletContainerFactory' defined in class path resource 
[org/springframework/boot/autoconfigure/web/EmbeddedServletContainerAutoConfiguration$EmbeddedTomcat.class]: 
Initialization of bean failed; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'org.springframework.boot.autoconfigure.web.HttpEncodingAutoConfiguration': 
Unsatisfied dependency expressed through constructor parameter 0: Error creating bean with name 
'spring.http.encoding-org.springframework.boot.autoconfigure.web.HttpEncodingProperties': Initialization of bean
 failed; nested exception is java.lang.NoClassDefFoundError: javax/xml/bind/ValidationException; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'spring.http.encoding-
 org.springframework.boot.autoconfigure.web.HttpEncodingProperties': Initialization of bean failed; nested exception is 
 java.lang.NoClassDefFoundError: javax/xml/bind/ValidationException

根本的原因就是jdk9的jar包的缺失。

解决方法

在项目的pom.xml文件中引入缺失的jar包:

<!-- jdk9 缺失的jar包 -->
<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>
</dependency>

然后重新启动项目!!

2022-02-22 12:44:29.375  INFO 12020 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : Multiple Spring Data modules found, entering strict repository configuration mode!
2022-02-22 12:44:29.375  INFO 12020 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data Redis repositories in DEFAULT mode.
2022-02-22 12:44:29.423  INFO 12020 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 27ms. Found 0 Redis repository interfaces.
2022-02-22 12:44:29.995  INFO 12020 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8082 (http)
2022-02-22 12:44:30.012  INFO 12020 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2022-02-22 12:44:30.012  INFO 12020 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.35]

启动成功!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值