当前位置: 首页 > 知识库问答 >
问题:

TOMEE Spring JAX-RS(NoSuchMachodError)jar冲突

勾岳
2023-03-14

我正在尝试在TomEE服务器上运行我的应用程序,在经历了很多麻烦之后,我能够运行该应用程序。

然而,由于某种原因,我得到了某种类型的jar重新定位冲突,因此每当从应用程序调用重新定位资源类时都会出现如下错误

Jun 05, 2015 5:57:34 AM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [resteasy-servlet] in context with path [/MyApplicationName] threw exception [Servlet execution threw an exception] with root cause
java.lang.NoSuchMethodError: org.jboss.resteasy.specimpl.BuiltResponse.getHeaders()Ljavax/ws/rs/core/MultivaluedMap;
    at org.jboss.resteasy.core.ServerResponseWriter.setDefaultContentType(ServerResponseWriter.java:186)
    at org.jboss.resteasy.core.ServerResponseWriter.writeNomapResponse(ServerResponseWriter.java:46)
    at org.jboss.resteasy.core.SynchronousDispatcher.writeResponse(SynchronousDispatcher.java:427)
    at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:376)
    at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:179)
    at org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:220)
    at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:56)
    at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:51)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
    at org.apache.tomee.catalina.OpenEJBValve.invoke(OpenEJBValve.java:44)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:957)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1079)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:620)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:744)

我验证了BuiltResponse类,该类扩展了resteasy jar中的响应类,它包含该方法似乎很好。我尝试提取许多其他jar,以便提供冲突。下面是我处理resteasy的POM的一部分

<!-- Resteasy rest services -->
        <dependency>
            <groupId>org.jboss.resteasy</groupId>
            <artifactId>jaxrs-api</artifactId>
            <version>3.0.10.Final</version>
        </dependency>
        <dependency>
            <groupId>org.jboss.resteasy</groupId>
            <artifactId>resteasy-jaxrs</artifactId>
            <version>3.0.10.Final</version>
        </dependency>
        <dependency>
            <groupId>org.jboss.resteasy</groupId>
            <artifactId>resteasy-jackson-provider</artifactId>
            <version>3.0.10.Final</version>
        </dependency>
        <dependency>
            <groupId>org.jboss.resteasy</groupId>
            <artifactId>resteasy-jaxb-provider</artifactId>
            <version>3.0.10.Final</version>
        </dependency>
        <dependency>
            <groupId>org.jboss.resteasy</groupId>
            <artifactId>resteasy-multipart-provider</artifactId>
            <version>3.0.10.Final</version>
        </dependency>

我怀疑可能是tomEE lib文件夹中的某个jar引起了冲突,但找不到任何jar。

问题1:如果是这样的话,在TomEE/Tomcat中有没有办法强制应用程序在应用程序WEB-INF/lib文件夹而不是服务器lib文件夹中选择jar。就像在weblogic中一样,我们可以更新weblogic应用程序。通过将jar路径放在首选应用程序包标记中来创建xml。

问题2:所有的搜索都告诉我这是一个jar冲突问题。但是,如果是应用程序的内部jar冲突,那么同一jar结构如何在weblogic或其他服务器中工作?某些服务器的应用程序jar管理结构是否比其他服务器更好?

共有2个答案

蔡晨
2023-03-14
Suggesting 3 solutions to your problem.All 3 solutions are working for me.Let me know if it works for you.

1) 将tomcat服务器与相同的pom一起使用。xml

2) 修改pom。xml。使用电子邮件服务器。

<dependency>
    <groupId>org.jboss.resteasy</groupId>
    <artifactId>resteasy-jaxrs</artifactId>
    <version>2.2.1.GA</version>
</dependency>  

<dependency>
    <groupId>org.jboss.resteasy</groupId>
    <artifactId>resteasy-jackson-provider</artifactId>
    <version>2.2.1.GA</version>
</dependency>

3)使用jersey jax-rs实现。使用tomee服务器

<dependency>
    <groupId>com.sun.jersey</groupId>
    <artifactId>jersey-server</artifactId>
    <version>1.19</version>
</dependency>
<dependency>
    <groupId>com.sun.jersey</groupId>
    <artifactId>jersey-servlet</artifactId>
    <version>1.19</version>
</dependency>
曹伟泽
2023-03-14

这是因为Tomee lib有另一个jar文件“javaee-api-6.0-6.jar”,该文件也有相同命名空间的响应类,因此它与jax rs jar中的类名冲突。Jax-rs正在访问lib-jar的响应类,该类没有所需的方法。

 类似资料:
  • 问题内容: 我意识到问题是weblogic 12c使用的是lib文件com.google.common_1.0.0.0_0-6.jar,而我的应用程序是使用Guava-11.0.2.jar,对我来说听起来像他们在冲突,试图在Google上搜索,但我不知道该怎么办,请问该解决方案合适的解决方案是什么? 问题答案: 我遇到了同样的问题,我当时所做的是,我用最新的Guava(当前为guava-13.0.

  • 问题内容: //这是我的代码,我正在代理工作… //以下错误出现在我的控制台上 我正在使用以下罐子 问题答案: 该班已搬迁到另一个包中的HttpClient 4.4。 从4.4开始 将您的httpcore版本升级到至少4.4即可解决该问题。

  • 我正在使用Spring Boot。我想将JAX RS作为我的基本REST-API与WebSockets结合使用(使用Stomp)。然而,这两个图书馆似乎最终陷入了冲突。 我有以下WebSocketConfig: 以及以下AppConfig: 如果两个类都在。如果我注释掉AppConfig,我的套接字连接将没有任何问题。在其他情况下,我的REST-Api可以工作,但是无法建立web socket-C

  • 我在部署在WebLogic 12c上的应用程序中从guava 14.0.1更新到15.0,在部署期间我得到了一个java.lang.NoSuchmetodException,我一直无法解决: 我已经在我的WebLogic中使用了WebLogic prefer应用程序包classloader过滤。xml文件,以解决WebLogic 12c中的运行时冲突,因为它似乎要重新打包库的旧版本。这在guava

  • 我试图在我的项目中设置Fitnesse,但我面临着番石榴罐的一些问题这就是我的pom.xml的样子: 我正在使用在Fitnesse中设置类路径。此插件瞬态使用jar。我的项目还需要Guava jar。Maven依赖树: 这是我在尝试启动fitnesse服务器时遇到的错误: 现在,如果在maven类路径插件之后声明Guava依赖项,那么我不会遇到这个问题,但是我的单元测试和集成测试失败,出现了Met

  • 运行一个客户端最少需要Jersey框架的哪些JAR文件?如果我包括所有的JAR,它将占用4 MB。