我正在开发一个项目,需要将 jackson-databind (即 com.fasterxml.jackson.core)从 2.9.10.4 更新到 2.10.0,以消除当前版本暴露的一些漏洞问题。由于项目要求,我只能升级到所需的较低版本,因此我从尽可能低的版本开始,以规避漏洞,即 2.10.0。
在我的本地构建通过了,并且它在 Jenkins 中构建并成功部署。但是,当我们退回 Weblogic 服务器时,我们会收到此错误,该错误源于 .war 文件。此错误不会在之前的版本中出现,并且在更改之前也不会出现。我的想法是,有问题的类是杰克逊核心库的一部分,正在更新以获取杰克逊数据绑定更新,完全删除了该类,我可能必须使用新的依赖项来获取它,但我找不到任何文档可以证实这一点。
java.lang.NoClassDefFoundError: org/codehaus/jackson/JsonProcessingException
at java.lang.Class.getDeclaredConstructors0(Native Method)
at java.lang.Class.privateGetDeclaredConstructors(Class.java:2671)
- List item
at java.lang.Class.getDeclaredConstructors(Class.java:2020)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.determineCandidateConstructors(AutowiredAnnotationBeanPostProcessor.java:231)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.determineConstructorsFromBeanPostProcessors(AbstractAutowireCapableBeanFactory.java:1004)
Truncated.
Caused By: java.lang.ClassNotFoundException: org.codehaus.jackson.JsonProcessingException
at weblogic.utils.classloaders.GenericClassLoader.findLocalClass(GenericClassLoader.java:1029)
at weblogic.utils.classloaders.GenericClassLoader.findClass(GenericClassLoader.java:990)
at weblogic.utils.classloaders.ChangeAwareClassLoader.findClass(ChangeAwareClassLoader.java:101)
at weblogic.utils.classloaders.GenericClassLoader.doFindClass(GenericClassLoader.java:611)
at weblogic.utils.classloaders.GenericClassLoader.loadClass(GenericClassLoader.java:543)
Truncated.
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.10.4</version>
</dependency>
您需要将
jackson-core
依赖项添加到您的 pom.xml 中。它有org.codehaus.jackson.JsonProcessingException
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.10.0</version>
</dependency>