【问题标题】:java.lang.NoClassDefFoundError: org/codehaus/jackson/JsonFactoryjava.lang.NoClassDefFoundError: org/codehaus/jackson/JsonFactory
【发布时间】:2015-07-29 16:31:18
【问题描述】:

我正在使用 Restful Service 运行应用程序。并且正在使用部署在 weblogic 应用程序服务器中的 Jersey 版本 1.16。它在 DEV 服务器中工作,并在 QA 服务器中抛出这样的错误。

<WLS Kernel>> <> <> <1438102106438> <BEA-101017> <[ServletContext@546053855[app:APP module:BSWeb path:/Web spec-version:2.5]] Root cause of ServletException. java.lang.NoClassDefFoundError: org/codehaus/jackson/JsonFactory at com.sun.jersey.json.impl.reader.JsonXmlStreamReader.create(JsonXmlStreamReader.java:110) at com.sun.jersey.json.impl.Stax2JsonFactory.createReader(Stax2JsonFactory.java:137) at com.sun.jersey.json.impl.Stax2JsonFactory.createReader(Stax2JsonFactory.java:127) at com.sun.jersey.json.impl.BaseJSONUnmarshaller.createXmlStreamReader(BaseJSONUnmarshaller.java:116) at com.sun.jersey.json.impl.BaseJSONUnmarshaller.unmarshalJAXBElementFromJSON(BaseJSONUnmarshaller.java:111) at com.sun.jersey.json.impl.BaseJSONUnmarshaller.unmarshalFromJSON(BaseJSONUnmarshaller.java:100) at com.sun.jersey.json.impl.provider.entity.JSONRootElementProvider.readFrom(JSONRootElementProvider.java:129) at com.sun.jersey.core.provider.jaxb.AbstractRootElementProvider.readFrom(AbstractRootElementProvider.java:111) at com.sun.jersey.spi.container.ContainerRequest.getEntity(ContainerRequest.java:488) at com.sun.jersey.server.impl.model.method.dispatch.EntityParamDispatchProvider$EntityInjectable.getValue(EntityParamDispatchProvider.java:123) at com.sun.jersey.server.impl.inject.InjectableValuesProvider.getInjectableValues(InjectableValuesProvider.java:46) at com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$EntityParamInInvoker.getParams(AbstractResourceMethodDispatchProvider.java:153) at com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$TypeOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:183) at com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75) at com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:302) at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147) at com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108) at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147) at com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84) at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1511) at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1442) at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1391) at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1381) at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:416) at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:538) at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:716) at javax.servlet.http.HttpServlet.service(HttpServlet.java:820) at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227) at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125) at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:301) at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:184) at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3741) at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3705) at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321) at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120) at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2282) at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2181) at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1491) at weblogic.work.ExecuteThread.execute(ExecuteThread.java:256) at weblogic.work.ExecuteThread.run(ExecuteThread.java:221)

【问题讨论】:

  • 所以看起来杰克逊映射器 jar 丢失了。你检查过服务器类路径吗?我的意思是所有这些?
  • 我知道那个杰克逊罐子在球衣课程中被引用。但它在 QA 环境中运行良好。相同的代码部署在两台具有相同版本 weblogic 服务器的服务器上
  • 应该有一个包含该类文件的 jar,或者 jar 本身位于您的服务器类路径文件夹之一下。您还可以跟踪 java 启动类加载日志以查看加载目录

标签: json jersey


【解决方案1】:

NoClassDefFoundError 是类加载器在“不知何故”无法加载某个类的定义时抛出的运行时异常。许多原因可能导致此异常,但在您的情况下,我相信您的类路径中有两个不同版本的 Jersey。检查您的 QA Web Logic 类路径,它可能包含另一个版本的 Jerssy jar/jars。

【讨论】:

  • 我也检查过了。我有相同版本的球衣罐
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-02
  • 1970-01-01
  • 2014-08-20
相关资源
最近更新 更多