使用 Jackson ObjectMapper 时出现 ClassNotFound 异常

发布于 2024-12-29 11:43:06 字数 1638 浏览 2 评论 0原文

我有一个 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

爱要勇敢去追 2025-01-05 11:43:06

我以某种方式遇到了这个问题: 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文