Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java RestEASY和Jackson不兼容-NoSuchMethodException_Java_Jackson_Jboss7.x_Resteasy_Wildfly - Fatal编程技术网

Java RestEASY和Jackson不兼容-NoSuchMethodException

Java RestEASY和Jackson不兼容-NoSuchMethodException,java,jackson,jboss7.x,resteasy,wildfly,Java,Jackson,Jboss7.x,Resteasy,Wildfly,我将我的项目从JBossAS7.2迁移到了WildFly 8.0,经过一段时间的版本更新,我不知道如何解决RestEASY和Jackson的不兼容问题 在JBossAS7.2中,我使用了RestEASY 3.0.6.Final和Jackson 2.2.1,它们的工作非常出色。但是现在,与WildFly的Jackson 2.3不兼容。服务器引发NoSuchMethodError异常: 13:56:27,049 ERROR [io.undertow.request] (default task-3)

我将我的项目从JBossAS7.2迁移到了WildFly 8.0,经过一段时间的版本更新,我不知道如何解决RestEASY和Jackson的不兼容问题

在JBossAS7.2中,我使用了RestEASY 3.0.6.Final和Jackson 2.2.1,它们的工作非常出色。但是现在,与WildFly的Jackson 2.3不兼容。服务器引发NoSuchMethodError异常:

13:56:27,049 ERROR [io.undertow.request] (default task-3) UT005023: Exception handling request to /iqpp/applicants/: java.lang.NoSuchMethodError: org.jboss.resteasy.plugins.providers.jackson.ResteasyJackson2Provider._configForWriting(Lcom/fasterxml/jackson/databind/ObjectMapper;[Ljava/lang/annotation/Annotation;)Lcom/fasterxml/jackson/jaxrs/json/JsonEndpointConfig;
at org.jboss.resteasy.plugins.providers.jackson.ResteasyJackson2Provider.writeTo(ResteasyJackson2Provider.java:137) [resteasy-jackson2-provider-3.0.6.Final.jar:]
at org.jboss.resteasy.core.interception.AbstractWriterInterceptorContext.writeTo(AbstractWriterInterceptorContext.java:129) [resteasy-jaxrs-3.0.6.Final.jar:]
at org.jboss.resteasy.core.interception.ServerWriterInterceptorContext.writeTo(ServerWriterInterceptorContext.java:62) [resteasy-jaxrs-3.0.6.Final.jar:]
at org.jboss.resteasy.core.interception.AbstractWriterInterceptorContext.proceed(AbstractWriterInterceptorContext.java:118) [resteasy-jaxrs-3.0.6.Final.jar:]
at org.jboss.resteasy.security.doseta.DigitalSigningInterceptor.aroundWriteTo(DigitalSigningInterceptor.java:143) [resteasy-crypto-3.0.6.Final.jar:]
at org.jboss.resteasy.core.interception.AbstractWriterInterceptorContext.proceed(AbstractWriterInterceptorContext.java:122) [resteasy-jaxrs-3.0.6.Final.jar:]
at org.jboss.resteasy.plugins.interceptors.encoding.GZIPEncodingInterceptor.aroundWriteTo(GZIPEncodingInterceptor.java:100) [resteasy-jaxrs-3.0.6.Final.jar:]
at org.jboss.resteasy.core.interception.AbstractWriterInterceptorContext.proceed(AbstractWriterInterceptorContext.java:122) [resteasy-jaxrs-3.0.6.Final.jar:]
at org.jboss.resteasy.core.ServerResponseWriter.writeNomapResponse(ServerResponseWriter.java:99) [resteasy-jaxrs-3.0.6.Final.jar:]
at org.jboss.resteasy.core.SynchronousDispatcher.writeResponse(SynchronousDispatcher.java:427) [resteasy-jaxrs-3.0.6.Final.jar:]
at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:376) [resteasy-jaxrs-3.0.6.Final.jar:]
at org.jboss.resteasy.core.SynchronousDispatcher.invokePropagateNotFound(SynchronousDispatcher.java:217) [resteasy-jaxrs-3.0.6.Final.jar:]
at org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:224) [resteasy-jaxrs-3.0.6.Final.jar:]
at org.jboss.resteasy.plugins.server.servlet.FilterDispatcher.doFilter(FilterDispatcher.java:62) [resteasy-jaxrs-3.0.6.Final.jar:]
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:56) [undertow-servlet-1.0.0.Final.jar:1.0.0.Final]
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:132) [undertow-servlet-1.0.0.Final.jar:1.0.0.Final]
at org.apache.deltaspike.servlet.impl.event.EventBridgeFilter.doFilter(EventBridgeFilter.java:59) [deltaspike-servlet-module-impl-0.5.jar:0.5]
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:56) [undertow-servlet-1.0.0.Final.jar:1.0.0.Final]
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:132) [undertow-servlet-1.0.0.Final.jar:1.0.0.Final]
at org.apache.deltaspike.servlet.impl.produce.RequestResponseHolderFilter.doFilter(RequestResponseHolderFilter.java:50) [deltaspike-servlet-module-impl-0.5.jar:0.5]
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:56) [undertow-servlet-1.0.0.Final.jar:1.0.0.Final]
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:132) [undertow-servlet-1.0.0.Final.jar:1.0.0.Final]
at io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:85) [undertow-servlet-1.0.0.Final.jar:1.0.0.Final]
at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:61) [undertow-servlet-1.0.0.Final.jar:1.0.0.Final]
at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36) [undertow-servlet-1.0.0.Final.jar:1.0.0.Final]
at org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(SecurityContextAssociationHandler.java:78)
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25) [undertow-core-1.0.0.Final.jar:1.0.0.Final]
at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:113) [undertow-servlet-1.0.0.Final.jar:1.0.0.Final]
at io.undertow.security.handlers.AuthenticationCallHandler.handleRequest(AuthenticationCallHandler.java:52) [undertow-core-1.0.0.Final.jar:1.0.0.Final]
at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:45) [undertow-core-1.0.0.Final.jar:1.0.0.Final]
at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:61) [undertow-servlet-1.0.0.Final.jar:1.0.0.Final]
at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:70) [undertow-servlet-1.0.0.Final.jar:1.0.0.Final]
at io.undertow.security.handlers.SecurityInitialHandler.handleRequest(SecurityInitialHandler.java:76) [undertow-core-1.0.0.Final.jar:1.0.0.Final]
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25) [undertow-core-1.0.0.Final.jar:1.0.0.Final]
at org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(JACCContextIdHandler.java:61)
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25) [undertow-core-1.0.0.Final.jar:1.0.0.Final]
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:25) [undertow-core-1.0.0.Final.jar:1.0.0.Final]
at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:240) [undertow-servlet-1.0.0.Final.jar:1.0.0.Final]
at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:227) [undertow-servlet-1.0.0.Final.jar:1.0.0.Final]
at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:73) [undertow-servlet-1.0.0.Final.jar:1.0.0.Final]
at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:146) [undertow-servlet-1.0.0.Final.jar:1.0.0.Final]
at io.undertow.server.Connectors.executeRootHandler(Connectors.java:168) [undertow-core-1.0.0.Final.jar:1.0.0.Final]
at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:687) [undertow-core-1.0.0.Final.jar:1.0.0.Final]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [rt.jar:1.7.0_45]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [rt.jar:1.7.0_45]
at java.lang.Thread.run(Thread.java:744) [rt.jar:1.7.0_45]
我所有的同事都犯了同样的错误。你能告诉我应该用什么版本吗

更新:

jarresteasy-jackson2-provider中的ResteasyJackson2Provider类扩展了jarJacksonJaxbJsonProvider中的JacksonJaxbJsonProvider并调用方法

  protected JsonEndpointConfig _configForWriting(ObjectMapper mapper, Annotation[] annotations)
jackson-jaxrs-json-provider-2.2.1中可以,但在jackson-jaxrs-json-provider-2.3.0中,此方法有不同的参数:

  protected JsonEndpointConfig _configForWriting(ObjectWriter writer, Annotation[] annotations)

我认为这是一个官方错误。

根据对jackson jaxrs提供商的评论
破坏不是故意的,将在jackson jaxrs providers补丁版本2.3.2中解决。

根据对jackson jaxrs providers的评论

破坏不是故意的,将在jackson jaxrs提供商补丁版本2.3.2中解决。

尝试在wildfly-8.2.0.Final中运行。

尝试在wildfly-8.2.0.Final中运行。

笑话是,这个stacktrace并没有抱怨jackson不存在的方法,它抱怨resteasy包空间中没有一个方法。看起来resteasy和resteasy jackson提供程序jar之间存在兼容性问题。事实上,我认为问题不在于提供程序,而在于jackson本身。您必须备份您所说的内容。至少我指出了证据,你只是胡说八道,让全世界都认为你永远是对的。我找到了它,请看更新。笑话是,这个stacktrace不是在抱怨Jackson的方法不存在,而是在抱怨resteasy包空间中的方法不存在。看起来resteasy和resteasy jackson提供程序jar之间存在兼容性问题。事实上,我认为问题不在于提供程序,而在于jackson本身。您必须备份您所说的内容。至少我指出了证据,你只是胡说八道,让全世界都认为你永远是对的。我发现了,请看更新2.3.2何时发布的想法?所以我用版本2.3.2替换了jackson jaxrs json provider、jackson jaxrs base、jackson module jaxb注释,但我仍然得到相同的NoSuchMethodException。我如何解决这个bug?问题是,AIUI,他们把方法放回去了,但它们不兼容二进制。RESTEasy必须根据2.3.2进行编译。在WildFly upstream中,降级到2.2.3已经完成,我可以确认夜间构建确实在2014年4月1日修复了这个问题。知道2.3.2什么时候发布吗?所以我用版本2.3.2替换了jackson jaxrs json提供程序、jackson jaxrs基、jackson模块jaxb注释,但我仍然得到相同的NoSuchMethodException。我如何解决这个bug?问题是,AIUI,他们把方法放回去了,但它们不兼容二进制。RESTEasy必须根据2.3.2进行编译。在WildFly upstream中,降级到2.2.3,我可以确认夜间构建确实在2014年4月1日修复了这一问题