我在新设置的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版本。
任何有想法的人?谢谢!
答案 0 :(得分:1)
这很可能是一个类路径问题,其中Glassfish以某种方式选择了旧版本的Jackson。 ACCEPT_CASE_INSENSITIVE_PROPERTIES 字段是在Jackson 2.5中引入的,因此请在类路径中查找早期版本。
尝试通过查找实现Versioned界面的类(例如ObjectMapper
)来记录Jackson版本。这应该告诉你类路径理论是否成立。