1

我正在使用 tomcat 7 和 jdk 1.6 开发一个宁静的服务。对于 json 处理,我使用的是 jackson 2.4.2,它工作正常,除非我尝试反序列化一个对象(序列化没有问题)。

错误是:

java.lang.ClassNotFoundException: org.codehaus.jackson.JsonFactory

这是杰克逊 1.x 保留该特定类的地方。我的杰克逊 2.4.2 在

com.fasterxml.jackson.core.JsonFactory

我不知道它为什么要尝试链接旧课程。我从未使用过杰克逊 1.x。

我用什么:

asm-3.3.1
commons-io-2.4
jackson-core-2.4.2
jackson-databind-2.4.2
jersey-bundle-1.18
mysql-connector-java-5.1.27

com.fasterxml.jackson.annotation

我从github上拿的。什么库可以尝试导入旧的杰克逊模块?任何帮助将非常感激。

4

1 回答 1

1

问题当然来自于尝试使用 Jackson 1.xObjectMapper并且缺少 1.x 的底层JsonFactory。由于这些来自不同的 jars(jackson-mapper-asl vs jackson-core-asl),因此很可能缺少一个。

现在,既然您没有直接使用 Jackson 1.x,那么问题是谁:也许 jersey 依赖于 1.x?

所以有两个相关的问题:(a)如果需要 Jackson 1.x,也要引入核心 jar,或者(b)如何完全删除对 Jackson 1.x 的使用。

请注意,从技术上讲,很可能同时使用 Jackson 的 1.x 和 2.x 版本,因为 2.x 专门设计为能够共存。这使升级更容易,并允许逐步(逐个组件)升级。

于 2014-10-14T18:49:49.687 回答