带有配置单元连接的Spring引导应用程序不';t启动嵌入式Tomcat
我使用Spring Boot,希望通过Spring数据hadoop 2.3.0.M1-hdp23将其连接到Hive。问题是,如果我将配置单元jdbc添加到pom.xml中,我的应用程序将无法启动。错误日志(部分)为: 有趣的是:如果我从我的pom.xml中删除hivejdbc依赖项,那么应用程序就会启动,我可以做其他任何事情,比如访问MySQL连接和访问所有类。只有当我想访问hive时,我才得到一个java.lang.ClassNotFoundException:org.apache.hive.jdbc.HiveDriver。当然,他找不到它,因为缺少依赖项,但这表明这种依赖项会带来麻烦。我尝试了其他版本,但没有成功。如果我删除了排除标记,则会出现其他错误:带有配置单元连接的Spring引导应用程序不';t启动嵌入式Tomcat,spring,tomcat,jdbc,hive,spring-data,Spring,Tomcat,Jdbc,Hive,Spring Data,我使用Spring Boot,希望通过Spring数据hadoop 2.3.0.M1-hdp23将其连接到Hive。问题是,如果我将配置单元jdbc添加到pom.xml中,我的应用程序将无法启动。错误日志(部分)为: 有趣的是:如果我从我的pom.xml中删除hivejdbc依赖项,那么应用程序就会启动,我可以做其他任何事情,比如访问MySQL连接和访问所有类。只有当我想访问hive时,我才得到一个java.lang.ClassNotFoundException:org.apache.hive.
org.springframework.context.ApplicationContextException: Unable to start embedded container; nested exception is java.lang.NoSuchMethodError: org.eclipse.jetty.servlet.ServletMapping.setDefault(Z)V
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.onRefresh(EmbeddedWebApplicationContext.java:133)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:474)
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:118)
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:686)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:320)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:957)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:946)
at com.myApp.Application.main(Application.java:16)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at org.springframework.boot.maven.RunMojo$LaunchRunner.run(RunMojo.java:418)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.NoSuchMethodError: org.eclipse.jetty.servlet.ServletMapping.setDefault(Z)V
at org.springframework.boot.context.embedded.jetty.JettyEmbeddedServletContainerFactory.addDefaultServlet(JettyEmbeddedServletContainerFactory.java:289)
at org.springframework.boot.context.embedded.jetty.JettyEmbeddedServletContainerFactory.configureWebAppContext(JettyEmbeddedServletContainerFactory.java:236)
at org.springframework.boot.context.embedded.jetty.JettyEmbeddedServletContainerFactory.getEmbeddedServletContainer(JettyEmbeddedServletContainerFactory.java:122)
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.createEmbeddedServletContainer(EmbeddedWebApplicationContext.java:157)
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.onRefresh(EmbeddedWebApplicationContext.java:130)
... 13 common frames omitted
希望任何人都有办法解决这个问题。我也遇到了同样的情况 在我的例子中,这是servlet api上的冲突 我在pom.xml文件中添加了此排除:
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>${hadoop.version}</version>
<exclusions>
<exclusion>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
</exclusion>
</exclusions>
</dependency>
org.apache.hadoop
hadoop客户端
${hadoop.version}
javax.servlet
servlet api
以下是对我有效的方法:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.hive</groupId>
<artifactId>hive-jdbc</artifactId>
<version>2.0.0</version>
<exclusions>
<exclusion>
<groupId>org.eclipse.jetty.aggregate</groupId>
<artifactId>*</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
org.springframework.boot
SpringBootStarterWeb
org.springframework.boot
spring启动程序日志记录
org.apache.hive
蜂窝jdbc
2.0.0
org.eclipse.jetty.aggregate
*
这种依赖关系对我很有效。
注意:不要使用hive jdbc版本3
org.apache.hive
蜂窝jdbc
2.3.5
jdk.tools
jdk.tools
org.eclipse.jetty.aggregate
*
如果使用gradle:
implementation('org.apache.hive:hive-jdbc:1.2.1') {
exclude group: 'org.eclipse.jetty.aggregate'
}
它适用于我的spring boot+hibernate应用程序,谢谢。
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>${hadoop.version}</version>
<exclusions>
<exclusion>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.hive</groupId>
<artifactId>hive-jdbc</artifactId>
<version>2.0.0</version>
<exclusions>
<exclusion>
<groupId>org.eclipse.jetty.aggregate</groupId>
<artifactId>*</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
implementation('org.apache.hive:hive-jdbc:1.2.1') {
exclude group: 'org.eclipse.jetty.aggregate'
}