【发布时间】:2016-07-05 00:41:02
【问题描述】:
我是泽西岛的新手,但我需要它在我的应用程序中已经实现了 RestEasy 休息服务。我需要 Jersey 因为它有服务器发送事件。项目构建器是 Ant(不是 Maven)。我总是有这样的错误:
严重:子容器在启动期间失败 java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException:无法启动组件 [StandardEngine[Catalina].StandardHost[localhost].StandardContext[]] 在 java.util.concurrent.FutureTask.report(FutureTask.java:122) 在 java.util.concurrent.FutureTask.get(FutureTask.java:192) 在 org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1123) 在 org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:799) 在 org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 在 org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559) 在 org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549) 在 java.util.concurrent.FutureTask.run(FutureTask.java:266) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 在 java.lang.Thread.run(Thread.java:745) 引起: org.apache.catalina.LifecycleException:无法启动组件 [StandardEngine[Catalina].StandardHost[localhost].StandardContext[]] 在 org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154) ... 6 更多原因:java.lang.NoClassDefFoundError: com/google/common/base/函数在 org.glassfish.jersey.internal.ServiceFinder.(ServiceFinder.java:163) 在 org.glassfish.jersey.servlet.internal.ServletContainerProviderFactory.getAllServletContainerProviders(ServletContainerProviderFactory.java:66) 在 org.glassfish.jersey.servlet.init.JerseyServletContainerInitializer.onStartup(JerseyServletContainerInitializer.java:132) 在 org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5456) 在 org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) ... 6 更多原因:java.lang.ClassNotFoundException: com.google.common.base.Function 在 org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1720) 在 org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571) ... 11 更多
2016 年 3 月 18 日上午 11:39:27 org.apache.catalina.core.ContainerBase startInternal SEVERE:子容器在启动期间失败 java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException:无法启动组件 [StandardEngine[Catalina].StandardHost[localhost]] 在 java.util.concurrent.FutureTask.report(FutureTask.java:122) 在 java.util.concurrent.FutureTask.get(FutureTask.java:192) 在 org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1123) 在 org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:300) 在 org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 在 org.apache.catalina.core.StandardService.startInternal(StandardService.java:443) 在 org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 在 org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:731) 在 org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 在 org.apache.catalina.startup.Catalina.start(Catalina.java:689) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:483) 在 org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:321) 在 org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:455) 引起 作者:org.apache.catalina.LifecycleException:无法启动组件 [StandardEngine[Catalina].StandardHost[localhost]] 在 org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154) 在 org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559) 在 org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549) 在 java.util.concurrent.FutureTask.run(FutureTask.java:266) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 在 java.lang.Thread.run(Thread.java:745) 引起: org.apache.catalina.LifecycleException:子容器失败 在开始时 org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1131) 在 org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:799) 在 org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) ... 6 更多
2016 年 3 月 18 日上午 11:39:27 org.apache.catalina.startup.Catalina 开始 严重:所需的服务器组件无法启动,因此 Tomcat 是 无法启动。 org.apache.catalina.LifecycleException: 失败 启动组件 [StandardServer[8005]] 在 org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154) 在 org.apache.catalina.startup.Catalina.start(Catalina.java:689) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:483) 在 org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:321) 在 org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:455) 引起 作者:org.apache.catalina.LifecycleException:无法启动组件 [标准服务 [Catalina]] 在 org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154) 在 org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:731) 在 org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) ... 7 更多原因:org.apache.catalina.LifecycleException:失败 启动组件 [StandardEngine[Catalina]] 在 org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154) 在 org.apache.catalina.core.StandardService.startInternal(StandardService.java:443) 在 org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) ... 9 更多原因:org.apache.catalina.LifecycleException: A child 容器在启动期间失败 org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1131) 在 org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:300) 在 org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) ... 11 更多
我的 Jax-RS 库版本超过 2。我使用的是 Tomcat 7(已经有一个 servlets 3.0) web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
...
<servlet>
<servlet-name>javax.ws.rs.core.Application</servlet-name>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>javax.ws.rs.core.Application</servlet-name>
<url-pattern>/jaxrs/*</url-pattern>
</servlet-mapping>
...
接下来是问题:
难道 Jersey 和 RestEasy 有冲突,我应该只使用 Jax-Rs 的一种实现
如果我可以在一个 servlet 容器中使用 Jesrsey 和 RestEasy,我做错了什么?
【问题讨论】:
-
1.是的。 2. 你不能。见this。
-
ClassNotFoundException... 我想你少了一个罐子
标签: java apache rest jersey jax-rs