【发布时间】:2017-12-24 20:13:24
【问题描述】:
我的问题看起来和其他人一样,但我尝试了其他解决方案,但没有任何效果,所以我放在这里,我使用的是 spring boot,需要集成谷歌驱动器来下载文件,以下三个依赖项需要根据谷歌文档添加。
compile 'com.google.api-client:google-api-client:1.23.0'
//compile 'com.google.oauth-client:google-oauth-client-jetty:1.23.0'
compile 'com.google.apis:google-api-services-drive:v3-rev94-1.23.0'
我的应用程序和谷歌示例都可以独立工作,但是当我在我的项目build.gradle 中包含上述依赖项时,注释掉的依赖项会导致以下异常并且应用程序无法启动。
2017-12-25 01:09:26.593[0;39m [32m INFO[0;39m [35m12741[0;39m [2m---[0;39m [2m[ restartedMain][0;39m [36ms.b.c.e.t.TomcatEmbeddedServletContainer[0;39m [2m:[0;39m Tomcat initialized with port(s): 8088 (http)
[2m2017-12-25 01:09:26.639[0;39m [32m INFO[0;39m [35m12741[0;39m [2m---[0;39m [2m[ restartedMain][0;39m [36mo.apache.catalina.core.StandardService [0;39m [2m:[0;39m Starting service [Tomcat]
[2m2017-12-25 01:09:26.641[0;39m [32m INFO[0;39m [35m12741[0;39m [2m---[0;39m [2m[ restartedMain][0;39m [36morg.apache.catalina.core.StandardEngine [0;39m [2m:[0;39m Starting Servlet Engine: Apache Tomcat/8.5.16
[2m2017-12-25 01:09:26.871[0;39m [31mERROR[0;39m [35m12741[0;39m [2m---[0;39m [2m[cat-startStop-1][0;39m [36morg.apache.catalina.core.ContainerBase [0;39m [2m:[0;39m A child container failed during start
java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Tomcat].StandardHost[localhost].TomcatEmbeddedContext[]]
at java.util.concurrent.FutureTask.report(FutureTask.java:122) [na:1.8.0_151]
at java.util.concurrent.FutureTask.get(FutureTask.java:192) [na:1.8.0_151]
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:939) ~[tomcat-embed-core-8.5.16.jar:8.5.16]
at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:872) [tomcat-embed-core-8.5.16.jar:8.5.16]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) [tomcat-embed-core-8.5.16.jar:8.5.16]
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1419) [tomcat-embed-core-8.5.16.jar:8.5.16]
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1409) [tomcat-embed-core-8.5.16.jar:8.5.16]
at java.util.concurrent.FutureTask.run(FutureTask.java:266) [na:1.8.0_151]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [na:1.8.0_151]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [na:1.8.0_151]
at java.lang.Thread.run(Thread.java:748) [na:1.8.0_151]
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Tomcat].StandardHost[localhost].TomcatEmbeddedContext[]]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:167) [tomcat-embed-core-8.5.16.jar:8.5.16]
... 6 common frames omitted
Caused by: org.apache.catalina.LifecycleException: Failed to start component [Pipeline[StandardEngine[Tomcat].StandardHost[localhost].TomcatEmbeddedContext[]]]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:167) [tomcat-embed-core-8.5.16.jar:8.5.16]
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5117) ~[tomcat-embed-core-8.5.16.jar:8.5.16]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) [tomcat-embed-core-8.5.16.jar:8.5.16]
... 6 common frames omitted
Caused by: org.apache.catalina.LifecycleException: Failed to start component [org.apache.catalina.authenticator.NonLoginAuthenticator[]]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:167) [tomcat-embed-core-8.5.16.jar:8.5.16]
at org.apache.catalina.core.StandardPipeline.startInternal(StandardPipeline.java:182) ~[tomcat-embed-core-8.5.16.jar:8.5.16]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) [tomcat-embed-core-8.5.16.jar:8.5.16]
... 8 common frames omitted
Caused by: java.lang.NoSuchMethodError: javax.servlet.ServletContext.getVirtualServerName()Ljava/lang/String;
at org.apache.catalina.authenticator.AuthenticatorBase.startInternal(AuthenticatorBase.java:1141) ~[tomcat-embed-core-8.5.16.jar:8.5.16]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) [tomcat-embed-core-8.5.16.jar:8.5.16]
... 10 common frames omitted
我正在使用 STS 使用 tomcat 容器,那么 tomcat 和 jetty 有什么乱七八糟的地方吗???
【问题讨论】:
-
您是否查看了依赖关系树以确定是否存在任何冲突的包或 com.google.oauth-client:google-oauth-client-jetty 是否覆盖了任何内容?
-
Tomcat 8.5 支持 servlet 规范 3.1,因此应该存在
javax.servlet.ServletContext.getVirtualServerName。如果您以某种方式将servlet-api.jar文件替换为来自 servlet 规范的早期版本的文件,您可能会收到此类错误。 -
@ChristopherSchultz 谢谢先生,我实际上没有添加,但码头依赖添加,所以我的问题通过添加 servlet3.1.0 版本到我的 gradle 来解决,
-
@SeanCarroll 是的,我检查了树并且没有任何覆盖我的意思是唯一的 servlet-api2.0 存在并且来自码头,我也尝试了传递依赖设置 false,但没有运气
-
我使用 spring boot 1.5.9 (tomcat 8.5.23) 创建了一个示例项目,并添加了列出的 3 个依赖项,我能够成功启动应用程序。我看到的jetty(6.1.26)的servlet-api版本是2.5
标签: java spring tomcat google-drive-api jetty