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

RestEasy 3.5.0。App Engine标准env的最终版本-NoSuchFieldErrorSERVER_SENT_EVENTS_TYPE

上官飞
2023-03-14

我有一个非常基本的Java8应用程序,使用Resteasy 3.1.4。最终部署应用程序内引擎标准环境。

但当我将Resteasy升级到3.5.0时。最终的

  • 我当地的环境都很好
  • 部署时,我得到以下堆栈跟踪:

servlet java的未捕获异常。lang.NoSuchFieldError:SERVER\u SENT\u EVENTS\u TYPE at org。jboss。放松。果心ResourceMethodInvoker。isSseResourceMethod(ResourceMethodInvoker.java:162)位于org。jboss。放松。果心ResourceMethodInvoker。(ResourceMethodInvoker.java:147)位于org。jboss。放松。果心ResourceMethodRegistry。org上的processMethod(ResourceMethodRegistry.java:345)。jboss。放松。果心ResourceMethodRegistry。在org注册(ResourceMethodRegistry.java:272)。jboss。放松。果心ResourceMethodRegistry。在org上添加ResourceFactory(ResourceMethodRegistry.java:223)。jboss。放松。果心ResourceMethodRegistry。在org上添加ResourceFactory(ResourceMethodRegistry.java:195)。jboss。放松。果心ResourceMethodRegistry。在org上添加ResourceFactory(ResourceMethodRegistry.java:181)。jboss。放松。果心ResourceMethodRegistry。在org上添加ResourceFactory(ResourceMethodRegistry.java:158)。jboss。放松。果心ResourceMethodRegistry。addPerRequestResource(ResourceMethodRegistry.java:77)位于org。jboss。放松。spi。重新部署。在org注册(ResteasyDeployment.java:496)。jboss。放松。spi。重新部署。startInternal(ResteasyDeployment.java:279)位于org。jboss。放松。spi。重新部署。在org启动(ResteasyDeployment.java:86)。jboss。放松。插件。服务器servlet。ServletContainerDispatcher。位于org的init(ServletContainerDispatcher.java:119)。jboss。放松。插件。服务器servlet。HttpServletDispatcher。init(HttpServletDispatcher.java:36)位于org。日食码头。servlet。ServletHolder。位于org的initServlet(ServletHolder.java:643)。日食码头。servlet。ServletHolder。在org初始化(ServletHolder.java:422)。日食码头。servlet。ServletHandler。在org初始化(ServletHandler.java:892)。日食码头。servlet。ServletContextHandler。位于org的startContext(ServletContextHandler.java:349)。日食码头。网络应用。WebAppContext。org上的startWebapp(WebAppContext.java:1406)。日食码头。网络应用。WebAppContext。startContext(WebAppContext.java:1368)位于org。日食码头。服务器处理程序。ContextHandler。doStart(ContextHandler.java:778)位于org。日食码头。servlet。ServletContextHandler。doStart(ServletContextHandler.java:262)位于org。日食码头。网络应用。WebAppContext。doStart(WebAppContext.java:522)位于org。日食码头。util。组成部分抽象生命周期。在com上启动(AbstractLifeCycle.java:68)。谷歌。应用托管。运行时。jetty9.AppVersionHandlerMap。com上的createHandler(AppVersionHandlerMap.java:244)。谷歌。应用托管。运行时。jetty9.AppVersionHandlerMap。getHandler(AppVersionHandlerMap.java:182)位于com.google.应用托管。运行时。jetty9.JettyServletEngineeAdapter。com上的serviceRequest(JettyServletEngineAdapter.java:97)。谷歌。应用托管。运行时。JavaRuntime$RequestRunnable。dispatchServletRequest(JavaRuntime.java:680)在com上。谷歌。应用托管。运行时。JavaRuntime$RequestRunnable。dispatchRequest(JavaRuntime.java:642)在com上。谷歌。应用托管。运行时。JavaRuntime$RequestRunnable。在com上运行(JavaRuntime.java:612)。谷歌。应用托管。运行时。JavaRuntime$NullSandboxRequestRunnable。在com上运行(JavaRuntime.java:806)。谷歌。应用托管。运行时。ThreadGroupPool$PoolEntry。在java上运行(ThreadGroupPool.java:274)。lang.Thread。运行(Thread.java:745)

所以看起来和环境有关。有线索解决吗?

谢啦

共有3个答案

宋康安
2023-03-14

我遇到了同样的错误,通过在pom中排除jar解决了它。xml

<dependencies>
          <dependency>
          [...]
            <exclusions>
                <exclusion>
                    <groupId>javax.ws.rs</groupId>
                    <artifactId>jsr311-api</artifactId>
                </exclusion>
            </exclusions>
  </dependency>
        </dependencies>
匡安宜
2023-03-14

我也有同样的问题。

我通过删除组织解决了这个问题。jboss。放松。jaxrs api。3.0.12.来自我的pom文件的最终版本。

希望这能解决你的问题。

翟淮晨
2023-03-14

我在Github上发布了@NicoNes的回复

Hi@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的错误版本?

让我知道。

-尼古拉斯

他是对的,我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,修复了我的问题!

 类似资料:
  • 我试图在本地appengine模拟器上运行我的代码,但我仍然得到错误信息,即ServletInitializer类不是javax.servlet.servlet有启动时的日志 我已经创建了ServletInitializer类,类似于教程和示例项目https://github.com/googleCloudplatform/get-started-java/blob/master/appengin

  • 本文向大家介绍Java中的StringBuffer是最终版本吗?,包括了Java中的StringBuffer是最终版本吗?的使用技巧和注意事项,需要的朋友参考一下 是的,StringBuffer类是最终的Java。我们不能覆盖此类。

  • 使用Spring Boot 2.0.0。在Google Appengine标准上发布。使用自动伸缩,但试图控制实例的创建/销毁。需要能够做一些清理,并希望记录这些事件。 Spring Boot中的任何方法,如@PreDestroy或ContextClosedEvent,似乎都不适用于GAE。 根据文档,应该可以通过添加关机钩子来检测实例的关机。 文档LifecycleManager.Shutdow

  • Web JS SDK Android SDK iOS SDK 小程序 SDK C++ SDK

  • 正在尝试使用CLI将ssh插入AppEngine实例。我有正确的命令,但不确定如何为标准实例允许ssh,或者这根本不可能。我是Gcloud(AWS Guy)的新手。他们的文档在实例类型和允许或不允许的方面不是很好。有人对此有什么建议吗。提前道谢!

  • ; Script generated by the HM NIS Edit Script Wizard. ; HM NIS Edit Wizard helper defines !define PRODUCT_NAME "极点中文" !define PRODUCT_VERSION "6.5 标准版" !define PRODUCT_PUBLISHER "杜志民" !define PRODUCT_