Resteasy 3.5.0.App Engine标准环境最终版-NoSuchFieldError SERVER_SENT_EVENTS_TYPE [英] Resteasy 3.5.0.Final on App Engine standard env - NoSuchFieldError SERVER_SENT_EVENTS_TYPE

查看:679
本文介绍了Resteasy 3.5.0.App Engine标准环境最终版-NoSuchFieldError SERVER_SENT_EVENTS_TYPE的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个使用Resteasy 3.1.4.Final 的漂亮的Java8应用程序,该应用程序部署在App Engine标准环境中.

I have a pretty basic Java8 application using Resteasy 3.1.4.Final deployed in App Engine standard env.

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

But when I upgrade Resteasy to 3.5.0.Final;

  • 在我当地的环境中一切都很好
  • 部署后,我将获得以下Stacktrace:

servlet的未捕获异常 java.lang.NoSuchFieldError:SERVER_SENT_EVENTS_TYPE 在org.jboss.resteasy.core.ResourceMethodInvoker.isSseResourceMethod(ResourceMethodInvoker.java:162) 在org.jboss.resteasy.core.ResourceMethodInvoker.(ResourceMethodInvoker.java:147) 在org.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.ResteasyDeployment.registration(ResteasyDeployment.java:496) 在org.jboss.resteasy.spi.ResteasyDeployment.startInternal(ResteasyDeployment.java:279) 在org.jboss.resteasy.spi.ResteasyDeployment.start(ResteasyDeployment.java:86) 在org.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.servlet.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.startContext(WebAppContext.java:1368) 在org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.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.JavaRuntime $ NullSandboxRequestRunnable.run(JavaRuntime.java:806)上 在com.google.apphosting.runtime.ThreadGroupPool $ PoolEntry.run(ThreadGroupPool.java:274) 在java.lang.Thread.run(Thread.java:745)

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

因此,这似乎与环境有关. 有解决的线索吗?

So it's seems to be environment related. Any clue to solve it?

谢谢

推荐答案

我正在发布在

您好,@ 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的版本错误?

Hi @freddyboucher I don't think that this commit is responsible of the NoSuchFieldError you are dealing with. Resteasy 3.1.4.Final is an implementation of the JAX-RS-API 2.0.1 spec whereas 3.5.1.Final is an impl of the JAX-RS-API 2.1 spec. And the missing field you are talking about is coming from the javax.ws.rs.core.MediaType in JAX-RS-API 2.1. So can you please be sure that your runtime execution does not embed the wrong version o the JAX-RS-API ?

让我知道.

-尼古拉斯

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

And he was right, I had in my 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,解决了我的问题!

Upgrading to 2.1, fixed my issue!

这篇关于Resteasy 3.5.0.App Engine标准环境最终版-NoSuchFieldError SERVER_SENT_EVENTS_TYPE的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆