【问题标题】:ClassNotFound exception using Jackson ObjectMapper使用 Jackson ObjectMapper 的 ClassNotFound 异常
【发布时间】:2012-02-19 13:15:30
【问题描述】:

我有一个 Spring 3 MVC 应用程序,我正在为其设置一些 ajax 操作。 我的控制器操作如下所示:

@RequestMapping(value="add", method=RequestMethod.POST)
@Secured("ROLE_USER")
@ResponseStatus(HttpStatus.CREATED)
public @ResponseBody Plan addPlan(@RequestBody Plan plan, Principal principal) {
     //Save the plan
}

当我从浏览器发布计划数据时,应用会引发 ClassNotFound 异常:

java.lang.ClassNotFoundException: org.joda.time.ReadableInstant not found by jackson-mapper-asl [176]
at org.apache.felix.framework.ModuleImpl.findClassOrResourceByDelegation(ModuleImpl.java:787)
at org.apache.felix.framework.ModuleImpl.access$400(ModuleImpl.java:71)
at org.apache.felix.framework.ModuleImpl$ModuleClassLoader.loadClass(ModuleImpl.java:1768)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)

Plan 对象本身不包含任何 joda-date 类型。尽管它包含一组可以执行的对象。最初我是通过我的 DOA jar 拉入 joda-date jar,但即使我将直接依赖项添加到我的 web 项目的 pom.xml,错误仍然存​​在。我在这个项目的其他地方使用 joda 类没有任何问题。

其他信息 以下是我的 web pom.xml 中的相关依赖项:

<dependency>
        <groupId>joda-time</groupId>
        <artifactId>joda-time</artifactId>
        <version>2.0</version>
</dependency>
<dependency>
        <groupId>org.codehaus.jackson</groupId>
        <artifactId>jackson-core-asl</artifactId>
        <version>1.9.3</version>
</dependency>
<dependency>
        <groupId>org.codehaus.jackson</groupId>
        <artifactId>jackson-mapper-asl</artifactId>
        <version>1.9.3</version>
</dependency>

【问题讨论】:

  • 你能发布你的POM的相关部分吗?您可以随时验证的一件事是解压缩 WAR 并确保 Joda jar 位于 WEB-INF lib 文件夹中
  • 您是否正在将您的 webapp 部署到 OSGi 服务器中?
  • @Perception 我在上面添加了一大块我的 pom。我已经验证了 joda-time jar 在我的 war 文件中。
  • @Luciano 我正在从 netbenas 内部署到本地 glassfish 服务器。
  • 哦,我不熟悉 Glassfish,但它看起来使用 OSGi / Felix。您是否正在使用任何 Glassfish 服务,或者您的 Spring 应用程序是独立的? (例如,如果您的数据源是在 Glassfish 中定义的,或者它们是您应用的 Spring bean)。我在想的是,如果您可以尝试将您的应用程序部署在像 Tomcat 这样更简单的服务器上,看看错误是否仍然发生。

标签: java maven spring-mvc glassfish-3 jackson


【解决方案1】:

我已经在 Glassfish JIRA https://java.net/jira/browse/GLASSFISH-20808 上报告了这个问题

【讨论】:

    【解决方案2】:

    我不知何故遇到了这个问题:Apache FTP server is not seeing a logging jar package that exists in the class path

    他们在 glassfish-web.xml 中设置&lt;class-loader delegate="false"&gt; 的解决方案似乎解决了我的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-06-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-13
      • 2016-08-11
      相关资源
      最近更新 更多