启动报错-NoClassDefFoundError: jetty存在session不一致问题
报错信息:
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.boot.web.embedded.jetty.JettyServletWebServerFactory]: Factory method 'JettyServletWebServerFactory' threw exception; nested exception is java.lang.NoClassDefFoundError: org/eclipse/jetty/server/session/SessionDataStore
Caused by: java.lang.ClassNotFoundException:org.eclipse.jetty.server.session.SessionDataStore
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'JettyServletWebServerFactory' defined in class path resource [org/springframework/boot/autoconfigure/web/servlet/ServletWebServerFactoryConfiguration$EmbeddedJetty.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.boot.web.embedded.jetty.JettyServletWebServerFactory]: Factory method 'JettyServletWebServerFactory' threw exception; nested exception is java.lang.NoClassDefFoundError: org/eclipse/jetty/server/session/SessionDataStore
以上三种报错,实质都是一种,就是jar包冲突引起的,我这使用的hive-jdbc包中,包含了jetty包,但项目中并不需要,故排除这个依赖包。
注意:仔细查看引用hive和Hadoop组件内部依赖关系,因为都有可能包含jetty包,若都有,则都排除掉。
解决方法:
在包含jetty包的依赖下添加以下代码排除:
<dependency>
<groupId>org.apache.hive</groupId>
<artifactId>hive-jdbc</artifactId>
<version>${hive-jdbc.version}</version>
<exclusions>
<exclusion>
<groupId>org.eclipse.jetty.aggregate</groupId>
<artifactId>jetty-all</artifactId>
</exclusion>
</exclusions>
</dependency>
啥,你以为就这样就完了吗?我遇到的可是一大堆报错哦!
哦,不是啊!啥?你也遇到很多报错啊!来看看下面这个报错及解决汇总文章: