Ошибки, вызванные отсутствием объявления зависимости
Кто-нибудь успешно использовал Spring Boot, Spring Data Elasticsearch и Elasticsearch 5.x для работы?
Я обновил свой pom для использования spring-data -asticsearch 3.0.0.RELEASE (только что выпущен), в котором есть примечания по коммитам в Github, в которых говорится, что он поддерживает ES 5.
Я получал некоторые ошибки, которые были вызваны тем, что не объявили зависимость от spring-data-common
, После добавления без версии я заметил, что она, по-видимому, управляется Spring Boot и загружает в 1.13.7.RELEASE
Это вызывает: java.lang.NoClassDefFoundError: org/springframework/data/mapping/model/Property
Я тогда натолкнулся spring-data-common
до 2.0.0. ПОЖАЛУЙСТА, думая, что новейшие выпуски всего должны быть совместимы. Это вызывает исключение AbstractMethodError, когда хранилище подключено.
Кто-нибудь может дать какие-нибудь советы? Вот зависимости от моего POM
Managed versions from Parent POM:
<spring-boot.version>1.5.7.RELEASE</spring-boot.version>
<spring-cloud.version>Dalston.RELEASE</spring-cloud.version>
From POM from the child module where things don't work
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-commons</artifactId>
<!-- <version>2.0.0.RELEASE</version> -->
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-elasticsearch</artifactId>
<version>3.0.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>5.5.0</version>
</dependency>
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>transport</artifactId>
<version>5.5.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
</dependency>
</dependencies>
3 ответа
Кто бы ни редактировал название, он сделал неточное описание. Как первоначально говорилось, проблема заключается в "адской зависимости". Не было пропущенных зависимостей, а, скорее, тонны транзитивных зависимостей, которые должны были координироваться всеми версиями магическим неочевидным / недокументированным способом. - JvmSd121
Однажды я перенес проект spring-data-asticsearch (с ES 2.x) на ES 5.x.
Я потерял источник, но у меня все еще есть банка
Вы, ребята, поставили меня на правильный путь. Я обновил следующим образом:
Spring Core (и связанный с ним): 5.0.0.RELEASE Spring Boot: 2.0.0.M4 Spring Cloud: Finchley.M2
После установки управляемые версии обновляются следующим образом:
spring-data-commons: 2.0.0.RC3 (из релиз-поезда KAY-RC3) spring-data-asticsearch: 3.0.0.RC3 (из релиз-поезда KAY-RC3) эластичный поиск и транспорт: 5.5.2 (соответствует моему Требование 5.x)
Мы управляли версиями Jackson в нашем родительском pom для других дочерних модулей, что приводило к извлечению несовместимых версий. Я переопределил те в наших проектах Spring Boot до версии ${jackson.version}, определенной в Spring, следующим образом:
spring-jackson-version=2.9.1
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>${spring-jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>${spring-jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${spring-jackson.version}</version>
</dependency>
Я получаю еще одну ошибку из своего репо, которая, как мне кажется, вызвана самооценкой из-за моей модели данных. Кажется, все ошибки пути к классам исчезли. Я дам другое обновление, если я найду что-нибудь еще. Что за ср!
Спасибо за советы.