Resiteasy 3.5.0.Final on App Engine标准环境 - NoSuchFieldError SERVER_SENT_EVENTS_TYPE

问题描述 投票:4回答:2

我有一个非常基本的Java8应用程序,使用Resteasy 3.1.4.Final部署在App Engine标准环境中。

但是当我将Resteasy升级到3.5.0.Final时;

  • 我当地的环境都很好
  • 部署时我得到以下Stacktrace:

在组织的org.jboss.resteasy.core.ResourceMethodInvoker.isSseResourceMethod(ResourceMethodInvoker.java:162)在org.jboss.resteasy.core.ResourceMethodInvoker(ResourceMethodInvoker.java:147)SERVER_SENT_EVENTS_TYPE:从servlet的java.lang.NoSuchFieldError的未捕获的异常.jboss.resteasy.core.ResourceMethodRegistry.processMethod(ResourceMethodRegistry.java:345)在org.jboss.resteasy.core.ResourceMethodRegistry.register(ResourceMethodRegistry.java:272)在org.jboss.resteasy.core.ResourceMethodRegistry.addResourceFactory(ResourceMethodRegistry的.java:223)在org.jboss.resteasy.core.ResourceMethodRegistry.addResourceFactory(ResourceMethodRegistry.java:195)在org.jboss.resteasy.core.ResourceMethodRegistry.addResourceFactory(ResourceMethodRegistry.java:181)在org.jboss.resteasy。 core.ResourceMethodRegistry.addResourceFactory(ResourceMethodRegistry.java:158)在org.jboss.resteasy.core.ResourceMethodRegistry.addPerRequestResource(ResourceMethodRegistry.java:77)在org.jboss.resteasy.spi.Restea syDeployment.registration(ResteasyDeployment.java:496)在org.jboss.resteasy.spi.ResteasyDeployment.startInternal(ResteasyDeployment.java:279)在org.jboss.resteasy.spi.ResteasyDeployment.start(ResteasyDeployment.java:86)在组织.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.init(ServletContainerDispatcher.java:119)在org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.init(HttpServletDispatcher.java:36)在org.eclipse.jetty .servlet.ServletHolder.initServlet(ServletHolder.java:643)org.eclipse.jetty.servit.ServletHolder.initialize(ServletHolder.java:422)org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:892) )在org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:349)在org.eclipse.jetty.webapp.WebAppContext.startWebapp(WebAppContext.java:1406)在org.eclipse.jetty.webapp.WebAppContext。 org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHan)中的startContext(WebAppContext.java:1368) dler.java:778)在org.eclipse.jetty.servlet.ServletContextHandler.doStart(ServletContextHandler.java:262)在org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:522)在org.eclipse.jetty .util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)在com.google.apphosting.runtime.jetty9.AppVersionHandlerMap.createHandler(AppVersionHandlerMap.java:244)在com.google.apphosting.runtime.jetty9.AppVersionHandlerMap.getHandler (AppVersionHandlerMap.java:182)在com.google.apphosting.runtime.jetty9.JettyServletEngineAdapter.serviceRequest(JettyServletEngineAdapter.java:97)在com.google.apphosting.runtime.JavaRuntime $ RequestRunnable.dispatchServletRequest(JavaRuntime.java:680)在com.google.apphosting.runtime.JavaRuntime $ RequestRunnable.dispatchRequest(JavaRuntime.java:642)在com.google.apphosting.runtime.JavaRuntime $ RequestRunnable.run(JavaRuntime.java:612)在com.google.apphosting.runtime。 com.google.apph中的JavaRuntime $ NullSandboxRequestRunnable.run(JavaRuntime.java:806) java.lang.Thread.run上的osting.runtime.ThreadGroupPool $ PoolEntry.run(ThreadGroupPool.java:274)(Thread.java:745)

所以它似乎与环境有关。有什么线索可以解决吗?

谢谢

java rest google-app-engine resteasy
2个回答
3
投票

我发布了@NicoNes在Github收到的答案

嗨@freddyboucher我不认为这个提交是你正在处理的NoSuchFieldError的责任。 Resteasy 3.1.4.Final是JAX-RS-API 2.0.1规范的实现,而3.5.1.Final是JAX-RS-API 2.1规范的一个实现。您正在谈论的缺失字段来自JAX-RS-API 2.1中的javax.ws.rs.core.MediaType。那么请你确定你的运行时执行没有嵌入JAX-RS-API的错误版本吗?

让我知道。

-Nicolas

他是对的,我在我的pom.xml中:

  <dependencyManagement>
      <dependencies>
        <dependency>
          <groupId>javax.ws.rs</groupId>
          <artifactId>javax.ws.rs-api</artifactId>
          <version>2.0.1</version>
        </dependency>
      </dependencies>
  </dependencyManagement>

升级到2.1,解决了我的问题!


0
投票

我有同样的问题。

我通过从我的pom文件中删除org.jboss.resteasy.jaxrs-api.3.0.12.Final来解决它。

希望能解决您的问题。

© www.soinside.com 2019 - 2024. All rights reserved.