杰克逊没有忽略具有复杂对象类型的私有静态字段

时间:2013-07-04 00:22:05

标签: java json jackson deserialization

我有一个包含以下行的类:

private static org.apache.axis.description.TypeDesc typeDesc = new org.apache.axis.description.TypeDesc(MyClass.class, true);

当我尝试反序列化与此类对应的JSON消息时,Jackson的introspector命中TypeDesc并尝试解析它的内容。

typeDesc字段未包含在JSON消息中,我已将Jackson配置为忽略此字段,因此此问题似乎是在反序列化开始之前发生的Jackson初始化例程的一部分。

之前有没有遇到过这个?如果是这样,有什么问题?任何建议的解决方法除了逆向工程杰克逊本身?


如果有帮助,这是stacktrace的尾端:

java.lang.NoClassDefFoundError: org/apache/commons/discovery/tools/DiscoverSingleton
at org.apache.axis.components.logger.LogFactory$1.run(LogFactory.java:45)
at java.security.AccessController.doPrivileged(Native Method)
at org.apache.axis.components.logger.LogFactory.getLogFactory(LogFactory.java:41)
at org.apache.axis.components.logger.LogFactory.<clinit>(LogFactory.java:33)
at org.apache.axis.description.TypeDesc.<clinit>(TypeDesc.java:61)
at com.mypackage.MyClass.<clinit>(MyClass.java:2747)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:525)
at com.fasterxml.jackson.databind.introspect.AnnotatedConstructor.call(AnnotatedConstructor.java:120)

1 个答案:

答案 0 :(得分:0)

这不是杰克逊问题,它在你的类路径中。它是一个静态字段,因此它将在加载类时初始化。错误说它没有找到发布的单元类,你需要在类路径中包含这个类的jar。与杰克逊没什么关系