【发布时间】: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