在一个servlet容器

时间:2016-03-18 09:59:25

标签: java apache rest jersey jax-rs

我是泽西新手,但我需要在已经实施RestEasy休息服务的应用程序中使用它。我需要泽西岛,因为它有服务器发送事件。项目构建者是Ant(不是Maven)。我总是有一个错误:

  

严重:子容器在启动时失败   java.util.concurrent.ExecutionException:   org.apache.catalina.LifecycleException:无法启动组件   [StandardEngine [卡塔利娜] .StandardHost [本地主机] .StandardContext []]     在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: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)at   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 [卡塔利娜] .StandardHost [本地主机] .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 at   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]] 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: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)at   sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at   sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)     在   sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)     在java.lang.reflect.Method.invoke(Method.java:483)at   org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:321)at at   org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:455)导致   by:org.apache.catalina.LifecycleException:无法启动组件   [StandardEngine [Catalina] .StandardHost [localhost]] at   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)at   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 start   严重:所需的服务器组件无法启动,因此Tomcat是   无法开始。 org.apache.catalina.LifecycleException:失败   启动组件[StandardServer [8005]] at   org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)     在org.apache.catalina.startup.Catalina.start(Catalina.java:689)at   sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at   sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)     在   sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)     在java.lang.reflect.Method.invoke(Method.java:483)at   org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:321)at at   org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:455)导致   by:org.apache.catalina.LifecycleException:无法启动组件   [StandardService [Catalina]] at   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:一个孩子   容器在启动时失败   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 libs版本超过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>
  ...

接下来的问题是:

  1. 可能是Jersey和RestEasy发生冲突,我应该只使用Jax-Rs的一个实现

  2. 如果我可以在一个servlet容器中使用Jesrsey和RestEasy,我做错了什么?

1 个答案:

答案 0 :(得分:2)

您不能同时在同一个类路径中使用两个JAX-RS实现。你必须为你的项目选择其中一个。