我遇到的问题类似于another posting中的问题,但是我不知道问题出在哪里。将应用程序部署到WildFly服务器时,出现java.lang.NoSuchFieldError: WRITE_DURATIONS_AS_TIMESTAMPS
错误。
我的父dependencyManagement
文件中有以下依赖项(在pom.xml
部分中)。
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.9</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-joda</artifactId>
<version>2.9.9</version>
</dependency>
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>2.10.2</version>
</dependency>
在子模块中,我具有相同的依赖项(在dependencies
部分中),但是没有版本号(应从我的理解中继承)。
打包后,我的WEB-INF\lib
文件夹包含预期的jackson-databind-2.9.9.jar
,jackson-datatype-joda-2.9.9.jar
和joda-time-2.10.2.jar
。
但是,出现以下错误:
Caused by: java.lang.NoSuchFieldError: WRITE_DURATIONS_AS_TIMESTAMPS
at com.fasterxml.jackson.datatype.joda.ser.DurationSerializer.<init>(DurationSerializer.java:35) [jackson-datatype-joda-2.9.9.jar:2.9.9]
at com.fasterxml.jackson.datatype.joda.ser.DurationSerializer.<init>(DurationSerializer.java:26) [jackson-datatype-joda-2.9.9.jar:2.9.9]
at com.fasterxml.jackson.datatype.joda.JodaModule.<init>(JodaModule.java:40) [jackson-datatype-joda-2.9.9.jar:2.9.9]
看着那,看起来至少datatype
最终以2.9.9
结尾。因此,我唯一的猜测是databind
不能正确进入2.9.9
(并且正在解析为不存在WRITE_DURATIONS_AS_TIMESTAMPS
的版本)。但是我不确定为什么它不能正常工作。
我猜想,WildFly可能会以某种方式覆盖databind
的模块。我正在使用具有jackson-databind-2.4.1.jar
的WildFly 8.2.1。我尝试使用关联的module.xml
删除该JAR,但似乎无法解决任何问题。当然,我也删除了joda-time
模块。但是,同样的问题仍然发生。
其他信息:这都是蚂蚁/常春藤到Maven行动的全部内容。常春藤中的某些原始依赖项具有force="true"
,并且存在<exclude org="joda-time" conf="runtime,default" />
。但是,如果我了解Maven,那么如果您显式列出依赖项,则不需要强制,并且应该通过删除WildFly模块来排除该排除项。