使用 Jackson ObjectMapper 时出现 ClassNotFound 异常
我有一个 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
}
当我从浏览器发布 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>
I have a Spring 3 MVC app that I am setting up some ajax actions for.
My controller action looks like this:
@RequestMapping(value="add", method=RequestMethod.POST)
@Secured("ROLE_USER")
@ResponseStatus(HttpStatus.CREATED)
public @ResponseBody Plan addPlan(@RequestBody Plan plan, Principal principal) {
//Save the plan
}
When I post the Plan data from my browser the app throws a ClassNotFound exception:
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)
The Plan object itself does not contain any joda-date types. Though it contains a collection of objects that do. Originally I was pulling in the joda-date jar via my DOA jar but the error persists even if I add a direct dependency to my web project's pom.xml. I'm using the joda classes elsewhere in this project without any issue.
Additional information
Here are the relevant dependencies from my 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>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我以某种方式遇到了这个问题: Apache FTP 服务器没有看到类路径中存在的日志 jar 包
他们设置的解决方案
在 glassfish-web.xml 中似乎已经解决了我的问题。I somehow came across this question: Apache FTP server is not seeing a logging jar package that exists in the class path
Their solution of setting
<class-loader delegate="false">
in glassfish-web.xml seems to have fixed my issues.我已经在 Glassfish JIRA https://java.net/jira/browse/GLASSFISH-20808 上报告了这一点
I've reported this on Glassfish JIRA https://java.net/jira/browse/GLASSFISH-20808