未声明依赖项导致的错误

时间:2017-10-02 23:47:34

标签: spring-boot spring-data-elasticsearch spring-data-commons

有没有人成功获得Spring Boot,Spring Data Elasticsearch和Elasticsearch 5.x?

我更新了我的pom以使用spring-data-elasticsearch 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.RELEASE认为所有内容的最新版本应该是兼容的。这会在存储库连线时导致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 个答案:

答案 0 :(得分:0)

我曾经将spring-data-elasticsearch(使用ES 2.x)项目迁移到ES 5.x.

我丢失了来源,但我还有jar here

答案 1 :(得分:0)

你们让我走上正轨。我升级如下:

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-elasticsearch:3.0.0.RC3(来自发布列车KAY-RC3) elasticsearch and transport:5.5.2(符合我的5.x要求)

我们在父pom中为其他子模块管理了Jackson的版本,导致不兼容的版本被拉入。我将Spring Boot项目中的版本覆盖到Spring中定义的版本$ {jackson.version},如下所示: / p>

    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>

我从我的回购中收到了另一个错误,我认为这是由于我的数据模型造成的。所有类路径错误似乎已经消失。如果我发现更进一步的话,我会再发一次更新。什么是cf!

感谢您的提示。

答案 2 :(得分:0)

编辑标题的任何人都做了不准确的描述。如最初所述,问题是依赖地狱&#34;。并没有缺少依赖关系,而是大量的传递依赖关系,所有需要的版本都以魔术非显而易见/未记录的方式进行协调。 - JvmSd121