0

のGAバージョンのようです

spring-core
spring-data-commons
spring-data-mongodb

の最新のリリース候補と同様に

spring-boot-starter-web
spring-boot-autoconfigure

互換性がありません。

これらのアーティファクトのどのバージョンが相互に互換性がありますか?

2 つのオブジェクトを MongoDB データベースに入れ、それらを取り出して画面に出力する、非常に基本的な Application.java があります。

import game.acorn.entities.Entity;
import game.acorn.mRepositoryInterfaces.EntityRepository;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

@Configuration
@ComponentScan
@EnableAutoConfiguration
public class Application implements CommandLineRunner{

    @Autowired
    private EntityRepository repository;

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

    public void run(String... args) throws Exception {

        repository.deleteAll();

        repository.save(new Entity("Jack", "Skellington"));
        repository.save(new Entity("Blake", "Yarbrough"));

        System.out.println("Entities found");
        for (Entity entity : repository.findAll()){
            System.out.println(entity);
        }

        System.out.println();
        System.out.println("Entity by first name 'Jack'");
        System.out.println(repository.findByFirstName("Jack"));

        System.out.println();
        System.out.println("Entity by first name 'Blake'");
        System.out.println(repository.findByFirstName("Blake"));
    }


}

このアプリケーションを実行すると

spring-core               version 4.0.2.RELEASE
spring-data-commons       version 1.5.0.RELEASE
spring-boot-starter-web   version 1.0.0.RC4
spring-data-mongodb       version 1.4.1.RELEASE
spring-boot-autoconfigure version 1.0.0.RC3

私はjava.lang.NoClassDefFoundErrorで取得することになります

org.springframework.boot.autoconfigure.data.AbstractRepositoryConfigurationSourceSupport.registerBeanDefinitions

次のように見えます

public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata,
        final BeanDefinitionRegistry registry) {
    new RepositoryConfigurationDelegate(getConfigurationSource(), this.resourceLoader)
            .registerRepositoriesIn(registry, getRepositoryConfigurationExtension());
}

new RepositoryConfigurationDelegate(getConfigurationSource(), this.resourceLoader)

58行目です。使用しているバージョンとspring-bootの依存関係に矛盾があるようです。

だから私は私のバージョンをアップしようとしspring-data-commonsますversion 1.7.0.RELEASE

その後、クラスが利用可能になりますが、私はjava.lang.NoSuchMethodErroratを取得します

org.springframework.boot.autoconfigure.data.AbstractRepositoryConfigurationSourceSupport$1.<init>(AbstractRepositoryConfigurationSourceSupport.java:66)

次のように見えます

private AnnotationRepositoryConfigurationSource getConfigurationSource() {
        StandardAnnotationMetadata metadata = new StandardAnnotationMetadata(
                getConfiguration(), true);
        return new AnnotationRepositoryConfigurationSource(metadata, getAnnotation(),
                this.environment) {
            @Override
            public java.lang.Iterable<String> getBasePackages() {
                return AbstractRepositoryConfigurationSourceSupport.this
                        .getBasePackages();
            };
        };
    }

return new AnnotationRepositoryConfigurationSource(metadata, getAnnotation(),
            this.environment) {

65-66行目です。

私がチェックアウトするとき

org.springframework.data.repository.config.AnnotationRepositoryConfigurationSource

コンストラクターが

public AnnotationRepositoryConfigurationSource(AnnotationMetadata metadata, Class<? extends Annotation> annotation,
            ResourceLoader resourceLoader, Environment environment) {

        super(environment);

        Assert.notNull(metadata);
        Assert.notNull(annotation);
        Assert.notNull(resourceLoader);

        this.attributes = new AnnotationAttributes(metadata.getAnnotationAttributes(annotation.getName()));
        this.metadata = metadata;
        this.resourceLoader = resourceLoader;
    }

AbstractRepositoryConfigurationSourceSupportspring-boot-autoconfigure与えられた引数よりも 1 つ多い引数が必要です。

だから、私の質問は、どのバージョンの

spring-core
spring-data-commons
spring-boot-starter-web
spring-data-mongodb
spring-boot-autoconfigure

互いに互換性がありますか?

私のポンは次のように見えます

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.0.0.RC3</version>
    </parent>
  <groupId>Master-Project</groupId>
  <artifactId>Master-Project</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <description>Master Project for MongoDB and Spring</description>

  <modules>
  </modules>

  <dependencies>

    <!-- Spring Stuff -->  

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>4.0.2.RELEASE</version>
    </dependency>  
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-mongodb</artifactId>
        <version>1.4.1.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-commons</artifactId>
        <version>1.7.0.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <version>1.0.0.RC3</version>
    </dependency>



    <dependency>
        <groupId>org.mongodb</groupId>
        <artifactId>mongo-java-driver</artifactId>
    </dependency>   

    <dependency>
        <groupId>cglib</groupId>
        <artifactId>cglib</artifactId>
        <version>3.1</version>      
    </dependency>

  </dependencies>
  <repositories>
    <repository>
        <id>spring-milestones</id>
        <name>Spring Milestones</name>
        <url>http://repo.spring.io/milestone</url>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
    </repository>
</repositories>
  <build>
    <sourceDirectory>src</sourceDirectory>
    <plugins>
    <!--
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
          <source>1.3</source>
          <target>1.1</target>
        </configuration>
      </plugin>
    -->
      <plugin>
        <groupId>org.apache.maven.plugin</groupId>
        <artifactId>maven-eclipse-plugin</artifactId>
        <version>2.9</version>
        <configuration>
            <downloadSources>true</downloadSources>
            <downloadJavadocs>true</downloadJavadocs>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>

依存関係のバージョン タグを削除すると、同じ no such method 例外が発生します。

4

1 に答える 1

2

これは、Spring Boot 依存関係 pom (またはスターターの親) を 1.0.0.RC5 以降で使用すると修正されます。

于 2014-03-22T09:18:54.333 に答える