Java REST API抛出错误" org.glassfish.jersey.server.ContainerException:java.lang.NoSuchFieldError:ACCEPT_CASE_INSENSITIVE_PROPERTIES"

时间:2017-11-22 13:17:04

标签: java gwt jackson glassfish

我在新设置的Debian 9计算机上运行的Java后端不再正常工作。有些调用正在运行,其他调用因错误堆栈而失败:

  

org.glassfish.jersey.server.ContainerException:java.lang.NoSuchFieldError:ACCEPT_CASE_INSENSITIVE_PROPERTIES       在org.glassfish.jersey.servlet.internal.ResponseWriter.rethrow(ResponseWriter.java:278)       在org.glassfish.jersey.servlet.internal.ResponseWriter.failure(ResponseWriter.java:260)       at org.glassfish.jersey.server.ServerRuntime $ Responder.process(ServerRuntime.java:509)       在org.glassfish.jersey.server.ServerRuntime $ 2.run(ServerRuntime.java:334)       在org.glassfish.jersey.internal.Errors $ 1.call(Errors.java:271)       在org.glassfish.jersey.internal.Errors $ 1.call(Errors.java:267)       在org.glassfish.jersey.internal.Errors.process(Errors.java:315)       在org.glassfish.jersey.internal.Errors.process(Errors.java:297)       在org.glassfish.jersey.internal.Errors.process(Errors.java:267)       在org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:317)       在org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:305)       在org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:1154)       在org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:473)       在org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:427)       在org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:388)       在org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:341)       在org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:228)       在org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:686)       在org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:501)       在org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)       在org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:557)       在org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)       at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1086)       在org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:428)       在org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)       在org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1020)       在org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)       在org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)       at org.eclipse.jetty.server.handler.RequestLogHandler.handle(RequestLogHandler.java:68)       在org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)       在org.eclipse.jetty.server.Server.handle(Server.java:370)       at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:489)       at org.eclipse.jetty.server.AbstractHttpConnection.content(AbstractHttpConnection.java:960)       at org.eclipse.jetty.server.AbstractHttpConnection $ RequestHandler.content(AbstractHttpConnection.java:1021)       在org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:865)       在org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:240)       at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)       在org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:668)       在org.eclipse.jetty.io.nio.SelectChannelEndPoint $ 1.run(SelectChannelEndPoint.java:52)       在org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)       在org.eclipse.jetty.util.thread.QueuedThreadPool $ 3.run(QueuedThreadPool.java:543)       在java.lang.Thread.run(Thread.java:748)

它没有给我一个提示,在我的代码中发生这种情况,在其他机器上,使用相同的导入工作。

与项目工作正常的服务器相比,我发现使用的库没有任何区别。此外,在服务器和我的机器上使用相同的Java版本。

任何有想法的人?谢谢!

1 个答案:

答案 0 :(得分:1)

这很可能是一个类路径问题,其中Glassfish以某种方式选择了旧版本的Jackson。 ACCEPT_CASE_INSENSITIVE_PROPERTIES 字段是在Jackson 2.5中引入的,因此请在类路径中查找早期版本。

尝试通过查找实现Versioned界面的类(例如ObjectMapper)来记录Jackson版本。这应该告诉你类路径理论是否成立。