У меня проблема, похожая на ту, что есть в другой публикации , но я не могу понять, где моя проблема. При развертывании приложения на сервере 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
своими модулями. Я использую WildFly 8.2.1, который имеет jackson-databind-2.4.1.jar
. Я попытался удалить этот JAR с соответствующим module.xml
, но это, похоже, ничего не решило. Я также удалил модуль joda-time
, чтобы быть уверенным. Но та же самая проблема все еще случается.
Дополнительная информация: Это часть большого движения Муравья / Плюща в Мавен. Некоторые из исходных зависимостей в Ivy имели force="true"
, а <exclude org="joda-time" conf="runtime,default" />
. Тем не менее, если я понимаю Maven, то сила не понадобится, если вы явно перечислите зависимость, и это исключение должно быть удалено путем удаления модулей WildFly.