使用Hive连接的Spring-Boot-application不会启动嵌入式Tomcat [英] Spring-boot-application with Hive-connection doesn't start embedded Tomcat

查看:470
本文介绍了使用Hive连接的Spring-Boot-application不会启动嵌入式Tomcat的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用Spring-Boot并希望通过spring-data-hadoop 2.3.0.M1-hdp23将它连接到Hive。问题是如果我将hive-jdbc添加到我的pom.xml中,我的应用程序无法启动。 errorlog (部分)是:

  :: Spring Boot ::(v1.2.4.RELEASE )
2015-08-11 14:46:58.582信息3528 --- [lication.main()] com.myApp.Application:使用PID 3528(/ home / user / workspace / myApp /目标/类由用户在/ home / user / workspace / myApp中启动)
2015-08-11 14:46:58.783信息3528 --- [lication.main()] ationConfigEmbeddedWebApplicationContext:刷新org.springframework.boot .context.embedded.AnnotationConfigEmbeddedWebApplicationContext @ 5c01b2f:启动日期[Tue Aug 11 14:46:58 CEST 2015]; INFO 3528 --- [lication.main()] faAutowiredAnnotationBeanPostProcessor:找到并支持自动装配的JSR-330'javax.inject.Inject'注释
2015-08-11 14:47:02.99 b $ b 2015-08-11 14:47:03.829信息3528 --- [lication.main()] trationDelegate $ BeanPostProcessorChecker:类型为org.springframework.transaction的bean'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' .annotation.ProxyTransactionManagementConfiguration $$ EnhancerBySpringCGLIB $$ 65dc2a7d]没有资格被所有BeanPostProcessors处理(例如:不适合自动代理)
2015-08-11 14:47:03.933信息3528 --- [lication.main()] trationDelegate $ BeanPostProcessorChecker:[类org.springframework.transaction.annotation.AnnotationTransactionAttributeSource]类型的Bean'transactionAttributeSource'不符合所有BeanPostProcessors处理的条件(例如:不符合自动代理)
2015-08-11 14:47:03.991信息3528 --- [lication.main()] trationDelegate $ BeanPostProcessorChecker:类型为org.springframework.transaction.interceptor的bean'transactionInterceptor'。 TransactionInterceptor]没有资格被所有的BeanPostProcessors处理(例如:不符合自动代理的条件)
2015-08-11 14:47:04.015 INFO 3528 --- [lication.main()] trationDelegate $ BeanPostProcessorChecker:[org.springframework.transaction.interceptor.BeanFactoryTransactionAttributeSourceAdvisor]类型的Bean'org.springframework.transaction.config.internalTransactionAdvisor'不适合所有BeanPostProcessors处理(例如:不适合自动代理)
2015-08-11 14:47:05.661 INFO 3528 --- [lication.main()] sbcetTomcatEmbeddedServletContainer:Tomcat使用端口初始化:8080(http)
2015-08-11 14: 47:06.563 INFO 3528 --- [lication.main()] o.apache.catalina.core。 StandardService:启动服务Tomcat
2015-08-11 14:47:06.566 INFO 3528 --- [lication.main()] org.apache.catalina.core.StandardEngine:启动Servlet Engine:Apache Tomcat / 8.0。 23
2015-08-11 14:47:07.336 INFO 3528 --- [ost-startStop-1] oaccC [Tomcat]。[localhost]。[/]:初始化Spring嵌入式WebApplicationContext
2015- 08-11 14:47:07.339信息3528 --- [ost-startStop-1] osweb.context.ContextLoader:根WebApplicationContext:初始化在8567完成ms
2015-08-11 14:47:10.608 INFO 3528 --- [ost-startStop-1] ossweb.DefaultSecurityFilterChain:创建过滤链:org.springframework.security.web.util.matcher.AnyRequestMatcher@1,[org.springframework.security.web.context.request.async .WebAsyncManagerIntegrationFilter @ 4a329af,org.springframework.security.web.context.SecurityContextPersistenceFilter@730530af,org.springframework.security.web.header.HeaderWriterFilter@777febdc,org.springfram ework.security.web.authentication.logout.LogoutFilter@29ef5cb1,org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter@27cac72b,org.springframework.security.web.savedrequest.RequestCacheAwareFilter@17efd160,org.springframework.security.web。 servletapi.SecurityContextHolderAwareRequestFilter@711567b0,org.springframework.security.web.authentication.AnonymousAuthenticationFilter@f16564d,org.springframework.security.web.session.SessionManagementFilter@221bfb42,org.springframework.security.web.access.ExceptionTranslationFilter@4146c6af,org。 springframework.security.web.access.intercept.FilterSecurityInterceptor@710a1397]
2015-08-11 14:47:10.802信息3528 --- [ost-startStop-1] osbceServletRegistrationBean:将servlet:'dispatcherServlet'映射到[/]
2015-08-11 14:47:10.829错误3528 --- [cat-startStop-1] org.apache.catalina.core.ContainerBase:在启动java.util.concurrent期间子容器失败.ExecutionExcept ion:org.apache.catalina.LifecycleException:未能在java.util.concurrent.FutureTask.report(FutureTask.java:122)处启动组件[StandardEngine [Tomcat] .StandardHost [localhost] .StandardContext []]

at java.util.concurrent.FutureTask.get(FutureTask.java:192)
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:917)
at org .apache.catalina.core.StandardHost.startInternal(StandardHost.java:871)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina .core.ContainerBase $ StartChild.call(ContainerBase.java:1409)
at org.apache.catalina.core.ContainerBase $ StartChild.call(ContainerBase.java:1399)
在java.util.concurrent .FutureTask.run(FutureTask.java:266)
在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)$ b $在java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor .java:617)
在java.lang.Thread.run(Thread.java:745)
导致: org.apache.catalina.LifecycleException:未能在org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)上启动组件[StandardEngine [Tomcat] .StandardHost [localhost] .StandardContext []]

...省略6个常见框架
由java.lang.NoSuchMethodError引发:javax.servlet.ServletContext.addServlet(Ljava / lang / String; Ljavax / servlet / Servlet;)Ljavax / servlet / ServletRegistration $动态;在org.springframework.boot.context.embedded.ServletRegistrationBean.onStartup(ServletRegistrationBean.java:189)

在org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.selfInitialize(EmbeddedWebApplicationContext.java:222)
在org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.access $ 000(EmbeddedWebApplicationContext.java:84)$ b $在org.springframework.boot.context.embedded.EmbeddedWebApplicationContext $ 1.onStartup(EmbeddedWebApplicationContext.java b: 206)
at org.springframework.boot.context.embedded.tomcat.TomcatStarter.onStartup(TomcatStarter.java:54)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
... 6个常用框架省略

[...]

org.springframework.context.ApplicationContextException:无法启动嵌入容器;嵌套的例外是org.springframework.boot.context.embedded.EmbeddedServletContainerException:无法在org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.onRefresh(EmbeddedWebApplicationContext.java:133)启动Tomcat的嵌入式

。在org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:474)
在org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:118)
。在组织。 springframelication.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)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本地方法)
at sun.reflect.NativeMethodAcces在java.lang.reflect.Method.invoke处使用
(Method.java:483)
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)
引起:org.springframework.boot.context.embedded.EmbeddedServletContainerException:无法在org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainer.initialize(TomcatEmbeddedServletContainer.java:98)启动Tomcat的嵌入式

。在org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainer。< init>(TomcatEmbeddedServletContainer.java:75)
at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory.getTomcatEmbeddedServletContainer(TomcatEmbeddedServletContainerFactory.java: 378)
在org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContain erFactory.getEmbeddedServletContainer(TomcatEmbeddedServletContainerFactory.java:155)
位于org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.createEmbeddedServletContainer(EmbeddedWebApplicationContext.java:157)
位于org.springframework.boot.context.embedded。 EmbeddedWebApplicationContext.onRefresh(EmbeddedWebApplicationContext.java:130)
...省略13个常见框架
引起:org.apache.catalina.LifecycleException:无法启动组件[StandardServer [-1]]
在org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
at org.apache.catalina.startup.Tomcat.start(Tomcat.java:337)
at org。 springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainer.initialize(TomcatEmbeddedServletContainer.java:88)
...省略了18个常见框架
导致:org.apache.catalina.LifecycleException:无法启动组件[StandardService [Tomcat]]
at org.apache.catalina.util.LifecycleBase.start(Lifecycle Base.java:154)
在org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:769)
在org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java: 150)
...省略20个常见框架
由org.apache.catalina.LifecycleException引发:未能在org.apache.catalina.util启动组件[StandardEngine [Tomcat]]
.LifecycleBase.start(LifecycleBase.java:154)
at org.apache.catalina.core.StandardService.startInternal(StandardService.java:439)
at org.apache.catalina.util.LifecycleBase.start (LifecycleBase.java:150)
...省略22个常见框架
引起:org.apache.catalina.LifecycleException:在启动
期间,org.apache.catalina中的子容器失败。 core.ContainerBase.startInternal(ContainerBase.java:925)
位于org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:262)
位于org.apache.catalina.util.LifecycleBase。开始(LifecycleBase.java:150)
...省略24个常见框架

[...]

[错误]无法执行目标org.springframework.boot:spring-boot-maven-plugin:1.2.4.RELEASE:run(default-cli)on project myApp:运行时发生异常。 null:InvocationTargetException:无法启动嵌入容器;嵌套异常是org.springframework.boot.context.embedded.EmbeddedServletContainerException:无法启动嵌入式Tomcat:无法启动组件[StandardServer [-1]]:无法启动组件[StandardService [Tomcat]]:未能启动组件[StandardEngine [Tomcat]]:启动期间子容器失败

我的 pom.xml 部分地看起来像:

 < properties> 
< java.version> 1.8< /java.version>
< / properties>

< parent>
< groupId> org.springframework.boot< / groupId>
< artifactId> spring-boot-starter-parent< / artifactId>
< version> 1.2.4.RELEASE< / version>
< / parent>

<依赖关系>
< dependency>
< groupId> org.springframework.boot< / groupId>
< artifactId> spring-boot-starter-web< / artifactId>
< /依赖关系>
< dependency>
< groupId> org.springframework.boot< / groupId>
< artifactId> spring-boot-starter-thymeleaf< / artifactId>
< /依赖关系>
< dependency>
< groupId> org.springframework.boot< / groupId>
< artifactId> spring-boot-starter-data-jpa< / artifactId>
< /依赖关系>
< dependency>
< groupId> org.hibernate< / groupId>
< artifactId> hibernate-validator< / artifactId>
< /依赖关系>
< dependency>
< groupId> mysql< / groupId>
< artifactId> mysql-connector-java< / artifactId>
< /依赖关系>
< dependency>
< groupId> org.apache.tomcat.embed< / groupId>
< artifactId> tomcat-embed-el< / artifactId>
< /依赖关系>

<! - Hive依赖项 - >
< dependency>
< groupId> commons-dbcp< / groupId>
< artifactId> commons-dbcp< / artifactId>
< /依赖关系>
< dependency>
< groupId> org.springframework.data< / groupId>
< artifactId> spring-data-hadoop-boot< / artifactId>
< version> 2.3.0.M1-hdp23< / version>
< /依赖关系>
< dependency>
< groupId> org.apache.hive< / groupId>
< artifactId> hive-jdbc< / artifactId>
< version> 1.2.1< / version>
<排除项>
<排除>
< groupId> org.slf4j< / groupId>
< artifactId> slf4j-log4j12< / artifactId>
< /排除>
<排除>
< groupId> log4j< / groupId>
< artifactId> log4j< / artifactId>
< /排除>
<排除>
< groupId> org.eclipse.jetty.aggregate< / groupId>
< artifactId> jetty-all< / artifactId>
< /排除>
< /排除>
< /依赖关系>
< dependency>
< groupId> org.apache.hadoop< / groupId>
< artifactId> hadoop-core< / artifactId>
< version> 1.2.1< / version>
<排除项>
<排除>
< groupId> tomcat< / groupId>
< artifactId> jasper-runtime< / artifactId>
< /排除>
<排除>
< groupId> tomcat< / groupId>
< artifactId> jasper-compiler< / artifactId>
< /排除>
< /排除>
< /依赖关系>
< /依赖关系>

我已经定义了两个数据源来同时使用Hive和MySQL,一个是 @Primary - 但这不是问题。我的 Application.java 是:

  @EnableAutoConfiguration 
@PropertySource({classpath: application.properties})
@ComponentScan(com.myApp)
@SpringBootApplication
public class Application {
public static void main(String [] args){
SpringApplication.run(Application.class,args);




$ b有趣的是:如果我删除




> em> hive-jdbc dependency
在我的 pom.xml 之外启动应用程序,我可以执行其他任何操作,例如访问我的MySQL连接并访问所有类。只有当我想访问配置单元时,我得到了 java.lang.ClassNotFoundException:org.apache.hive.jdbc.HiveDriver 。当然,他找不到它,因为依赖关系丢失了,但它表明这种依赖关系造成了麻烦。我尝试了其他版本,但没有成功。如果我删除了 排除标签 ,我收到了另一个错误:

  org.springframework.context.ApplicationContextException:无法启动嵌入容器;嵌套异常是java.lang.NoSuchMethodError:在org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.onRefresh org.eclipse.jetty.servlet.ServletMapping.setDefault(Z)V 
(EmbeddedWebApplicationContext.java:133)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:474)
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:118)
在org.springframework.boot.SpringApplication.refresh(SpringApplication.java:686)
位于org.springframework.boot.SpringApplication.run(SpringApplication.java:320)
位于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(NativeMet hdAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
在org.springframework.boot.maven.RunMojo $ LaunchRunner.run(RunMojo.java:418)$ b $在java.lang.Thread.run(Thread.java:745)
引起: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.JettyEmbeddedServletContainer.getEmbeddedServletContainer(JettyEmbeddedServletContainerFactory.java:122)
b $ b在org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.createEmbeddedServletC ontainer(EmbeddedWebApplicationContext.java:157)
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.onRefresh(EmbeddedWebApplicationContext.java:130)
... 13个常用框架省略
code>

希望任何人有解决这个问题的想法。

解决

 <依赖关系>方案


< dependency>
< groupId> org.springframework.boot< / groupId>
< artifactId> spring-boot-starter-web< / artifactId>
<排除项>
<排除>
< groupId> org.springframework.boot< / groupId>
< artifactId> spring-boot-starter-logging< / artifactId>
< /排除>
< /排除>
< /依赖关系>
< dependency>
< groupId> org.apache.hive< / groupId>
< artifactId> hive-jdbc< / artifactId>
< version> 2.0.0< / version>
<排除项>
<排除>
< groupId> org.eclipse.jetty.aggregate< / groupId>
< artifactId> *< / artifactId>
< /排除>
< /排除>
< /依赖关系>
< /依赖关系>


I use Spring-Boot and want to connect it to Hive by spring-data-hadoop 2.3.0.M1-hdp23. The problem is that my application doesn't start if I add hive-jdbc to my pom.xml. The errorlog (partly) is:

     :: Spring Boot ::        (v1.2.4.RELEASE)
     2015-08-11 14:46:58.582  INFO 3528 --- [lication.main()] com.myApp.Application             : Starting Application on m with PID 3528 (/home/user/workspace/myApp/target/classes started by user in /home/user/workspace/myApp)
     2015-08-11 14:46:58.783  INFO 3528 --- [lication.main()] ationConfigEmbeddedWebApplicationContext : Refreshing org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@5c01b2f: startup date [Tue Aug 11 14:46:58 CEST 2015]; root of context hierarchy
     2015-08-11 14:47:02.993  INFO 3528 --- [lication.main()] f.a.AutowiredAnnotationBeanPostProcessor : JSR-330 'javax.inject.Inject' annotation found and supported for autowiring
     2015-08-11 14:47:03.829  INFO 3528 --- [lication.main()] trationDelegate$BeanPostProcessorChecker : Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [class org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$65dc2a7d] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
     2015-08-11 14:47:03.933  INFO 3528 --- [lication.main()] trationDelegate$BeanPostProcessorChecker : Bean 'transactionAttributeSource' of type [class org.springframework.transaction.annotation.AnnotationTransactionAttributeSource] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
     2015-08-11 14:47:03.991  INFO 3528 --- [lication.main()] trationDelegate$BeanPostProcessorChecker : Bean 'transactionInterceptor' of type [class org.springframework.transaction.interceptor.TransactionInterceptor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
     2015-08-11 14:47:04.015  INFO 3528 --- [lication.main()] trationDelegate$BeanPostProcessorChecker : Bean 'org.springframework.transaction.config.internalTransactionAdvisor' of type [class org.springframework.transaction.interceptor.BeanFactoryTransactionAttributeSourceAdvisor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
     2015-08-11 14:47:05.661  INFO 3528 --- [lication.main()] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat initialized with port(s): 8080 (http)
     2015-08-11 14:47:06.563  INFO 3528 --- [lication.main()] o.apache.catalina.core.StandardService   : Starting service Tomcat
     2015-08-11 14:47:06.566  INFO 3528 --- [lication.main()] org.apache.catalina.core.StandardEngine  : Starting Servlet Engine: Apache Tomcat/8.0.23
     2015-08-11 14:47:07.336  INFO 3528 --- [ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
     2015-08-11 14:47:07.339  INFO 3528 --- [ost-startStop-1] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 8567 ms
     2015-08-11 14:47:10.608  INFO 3528 --- [ost-startStop-1] o.s.s.web.DefaultSecurityFilterChain     : Creating filter chain: org.springframework.security.web.util.matcher.AnyRequestMatcher@1, [org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@4a329af, org.springframework.security.web.context.SecurityContextPersistenceFilter@730530af, org.springframework.security.web.header.HeaderWriterFilter@777febdc, org.springframework.security.web.authentication.logout.LogoutFilter@29ef5cb1, org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter@27cac72b, org.springframework.security.web.savedrequest.RequestCacheAwareFilter@17efd160, org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter@711567b0, org.springframework.security.web.authentication.AnonymousAuthenticationFilter@f16564d, org.springframework.security.web.session.SessionManagementFilter@221bfb42, org.springframework.security.web.access.ExceptionTranslationFilter@4146c6af, org.springframework.security.web.access.intercept.FilterSecurityInterceptor@710a1397]
     2015-08-11 14:47:10.802  INFO 3528 --- [ost-startStop-1] o.s.b.c.e.ServletRegistrationBean        : Mapping servlet: 'dispatcherServlet' to [/]
     2015-08-11 14:47:10.829 ERROR 3528 --- [cat-startStop-1] org.apache.catalina.core.ContainerBase   : A child container failed during start java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Tomcat].StandardHost[localhost].StandardContext[]]
at java.util.concurrent.FutureTask.report(FutureTask.java:122)
at java.util.concurrent.FutureTask.get(FutureTask.java:192)
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:917)
at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:871)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1409)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1399)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
     Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Tomcat].StandardHost[localhost].StandardContext[]]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
... 6 common frames omitted
     Caused by: java.lang.NoSuchMethodError: javax.servlet.ServletContext.addServlet(Ljava/lang/String;Ljavax/servlet/Servlet;)Ljavax/servlet/ServletRegistration$Dynamic;
at org.springframework.boot.context.embedded.ServletRegistrationBean.onStartup(ServletRegistrationBean.java:189)
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.selfInitialize(EmbeddedWebApplicationContext.java:222)
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.access$000(EmbeddedWebApplicationContext.java:84)
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext$1.onStartup(EmbeddedWebApplicationContext.java:206)
at org.springframework.boot.context.embedded.tomcat.TomcatStarter.onStartup(TomcatStarter.java:54)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5156)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
... 6 common frames omitted

     [...]

     org.springframework.context.ApplicationContextException: Unable to start embedded container; nested exception is org.springframework.boot.context.embedded.EmbeddedServletContainerException: Unable to start embedded Tomcat
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: org.springframework.boot.context.embedded.EmbeddedServletContainerException: Unable to start embedded Tomcat
at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainer.initialize(TomcatEmbeddedServletContainer.java:98)
at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainer.<init>(TomcatEmbeddedServletContainer.java:75)
at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory.getTomcatEmbeddedServletContainer(TomcatEmbeddedServletContainerFactory.java:378)
at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory.getEmbeddedServletContainer(TomcatEmbeddedServletContainerFactory.java:155)
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
     Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardServer[-1]]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
at org.apache.catalina.startup.Tomcat.start(Tomcat.java:337)
at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainer.initialize(TomcatEmbeddedServletContainer.java:88)
... 18 common frames omitted
     Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardService[Tomcat]]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:769)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
... 20 common frames omitted
     Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Tomcat]]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
at org.apache.catalina.core.StandardService.startInternal(StandardService.java:439)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
... 22 common frames omitted
     Caused by: org.apache.catalina.LifecycleException: A child container failed during start
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:925)
at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:262)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
... 24 common frames omitted

     [...]

     [ERROR] Failed to execute goal org.springframework.boot:spring-boot-maven-plugin:1.2.4.RELEASE:run (default-cli) on project myApp: An exception occured while running. null: InvocationTargetException: Unable to start embedded container; nested exception is org.springframework.boot.context.embedded.EmbeddedServletContainerException: Unable to start embedded Tomcat: Failed to start component [StandardServer[-1]]: Failed to start component [StandardService[Tomcat]]: Failed to start component [StandardEngine[Tomcat]]: A child container failed during start

My pom.xml looks (partly) like:

        <properties>
            <java.version>1.8</java.version>
        </properties>

         <parent>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-parent</artifactId>
             <version>1.2.4.RELEASE</version>
         </parent>

         <dependencies>
             <dependency>
                 <groupId>org.springframework.boot</groupId>
                 <artifactId>spring-boot-starter-web</artifactId>
             </dependency>
             <dependency>
                 <groupId>org.springframework.boot</groupId>
                 <artifactId>spring-boot-starter-thymeleaf</artifactId>
             </dependency>
             <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-data-jpa</artifactId>
             </dependency>
             <dependency>
                <groupId>org.hibernate</groupId>
                <artifactId>hibernate-validator</artifactId>    
             </dependency>
             <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>   
             </dependency>
             <dependency>
                <groupId>org.apache.tomcat.embed</groupId>
                <artifactId>tomcat-embed-el</artifactId>
             </dependency>

            <!-- Hive Dependencies -->
                    <dependency>
                <groupId>commons-dbcp</groupId>
                <artifactId>commons-dbcp</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.data</groupId>
                <artifactId>spring-data-hadoop-boot</artifactId>
                <version>2.3.0.M1-hdp23</version>
            </dependency>
            <dependency>
                <groupId>org.apache.hive</groupId>
                <artifactId>hive-jdbc</artifactId>
                <version>1.2.1</version>
                <exclusions>
                    <exclusion>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-log4j12</artifactId>
            </exclusion>
            <exclusion>
                <groupId>log4j</groupId>
                <artifactId>log4j</artifactId>
            </exclusion>
            <exclusion>
                <groupId>org.eclipse.jetty.aggregate</groupId>
                <artifactId>jetty-all</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
     <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-core</artifactId>
        <version>1.2.1</version>
        <exclusions>
            <exclusion>
              <groupId>tomcat</groupId>
              <artifactId>jasper-runtime</artifactId>
            </exclusion>
            <exclusion>
              <groupId>tomcat</groupId>
              <artifactId>jasper-compiler</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
        </dependencies>

I have defined two data sources to use Hive and MySQL together, one as @Primary - but this is not a/the problem. My Application.java is:

    @EnableAutoConfiguration
    @PropertySource({"classpath:application.properties"})
    @ComponentScan("com.myApp")
    @SpringBootApplication
    public class Application {
        public static void main(String[] args) {
            SpringApplication.run(Application.class, args);
        }
    }

Interesting is: If I delete the hive-jdbc dependency out of my pom.xml the application starts and I can do everything else, like accessing my MySQL-connection and access all classes. Only if I want to access hive I got a java.lang.ClassNotFoundException: org.apache.hive.jdbc.HiveDriver. For sure, he can't find it because the dependency is missing, but it shows that this dependency makes trouble. I tried other versions, without success. If I remove the exclusion-tag I got an other error:

    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

Hope anyone has an idea to solve this problem.

解决方案

Here is what worked for me:

<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>

这篇关于使用Hive连接的Spring-Boot-application不会启动嵌入式Tomcat的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆