Spring-Data-Rest:升级到spring-data-rest-webmvc 2.0.0时的Spring Data Book示例失败.RELEASE

时间:2014-05-07 11:44:34

标签: spring-data-jpa spring-data-rest

我正在升级spring-data-rest-webmvc的版本(从1.1.0.M1升级到2.0.0.RELEASE)和spring-data-jpa(从1.3.0.RELEASE升级到1.5.0.RELEASE)在spring-data-rest和spring-data-jpa项目主页的教程部分给出的spring-data-book示例中。但是,我收到以下错误。

07-May-2014 17:08:56.176 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployWAR部署Web应用程序存档C:\ Software \ tomcat \ webapps \ Tst1.war 2014-05-07 17:08:59,353 DEBUG itory.config.RepositoryComponentProvider:264 - 标识的候选组件类:file [C:\ Software \ tomcat \ webapps \ Tst1 \ WEB-INF \ classes \ com \ oreilly \ springdata \ rest \为了\ OrderRepository.class] 2014-05-07 17:08:59,364错误pringframework.web.context.ContextLoader:324 - 上下文初始化失败 java.lang.IllegalAccessError:尝试从类org.springframework.data.repository.config.RepositoryComp访问方法org.springframework.context.annotation.AnnotationConfigUtils.processCommonDefinitionAnnotations(Lorg / springframework / beans / factory / annotation / AnnotatedBeanDefinition;)         在org.springframework.data.repository.config.RepositoryComponentProvider.findCandidateComponents(RepositoryComponentProvider.java:121)〜[spring-data-commons-1.7.0.RELEASE.jar:na]         在org.springframework.data.repository.config.RepositoryConfigurationSourceSupport.getCandidates(RepositoryConfigurationSourceSupport.java:69)〜[spring-data-commons-1.7.0.RELEASE.jar:na]         在org.springframework.data.repository.config.RepositoryConfigurationExtensionSupport.getRepositoryConfigurations(RepositoryConfigurationExtensionSupport.java:54)〜[spring-data-commons-1.7.0.RELEASE.jar:na]         在org.springframework.data.repository.config.RepositoryConfigurationDelegate.registerRepositoriesIn(RepositoryConfigurationDelegate.java:88)〜[spring-data-commons-1.7.0.RELEASE.jar:na]         在org.springframework.data.repository.config.RepositoryBeanDefinitionRegistrarSupport.registerBeanDefinitions(RepositoryBeanDefinitionRegistrarSupport.java:78)〜[spring-data-commons-1.7.0.RELEASE.jar:na]         在org.springframework.context.annotation.ConfigurationClassParser.processImport(ConfigurationClassParser.java:340)〜[spring-context-3.2.1.RELEASE.jar:3.2.1.RELEASE]         在org.springframework.context.annotation.ConfigurationClassParser.doProcessConfigurationClass(ConfigurationClassParser.java:232)〜[spring-context-3.2.1.RELEASE.jar:3.2.1.RELEASE]         在org.springframework.context.annotation.ConfigurationClassParser.processConfigurationClass(ConfigurationClassParser.java:153)〜[spring-context-3.2.1.RELEASE.jar:3.2.1.RELEASE]         在org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:139)〜[spring-context-3.2.1.RELEASE.jar:3.2.1.RELEASE]         在org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:282)〜[spring-context-3.2.1.RELEASE.jar:3.2.1.RELEASE]         在org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:223)〜[spring-context-3.2.1.RELEASE.jar:3.2.1.RELEASE]         在org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:630)〜[spring-context-3.2.1.RELEASE.jar:3.2.1.RELEASE]         在org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:461)〜[spring-context-3.2.1.RELEASE.jar:3.2.1.RELEASE]         在org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:389)〜[spring-web-3.2.1.RELEASE.jar:3.2.1.RELEASE]         在org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:294)〜[spring-web-3.2.1.RELEASE.jar:3.2.1.RELEASE]         在org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:112)[spring-web-3.2.1.RELEASE.jar:3.2.1.RELEASE]         在org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4828)[catalina.jar:8.0.0-RC5]         at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5276)[catalina.jar:8.0.0-RC5]         在org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)[catalina.jar:8.0.0-RC5]         在org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:726)[catalina.jar:8.0.0-RC5]         在org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:702)[catalina.jar:8.0.0-RC5]         在org.apache.catalina.core.StandardHost.addChild(StandardHost.java:698)[catalina.jar:8.0.0-RC5]         在org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:968)[catalina.jar:8.0.0-RC5]         在org.apache.catalina.startup.HostConfig $ DeployWar.run(HostConfig.java:1742)[catalina.jar:8.0.0-RC5]         at java.util.concurrent.Executors $ RunnableAdapter.call(Unknown Source)[na:1.7.0_45]         at java.util.concurrent.FutureTask.run(Unknown Source)[na:1.7.0_45]         at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)[na:1.7.0_45]         at java.util.concurrent.ThreadPoolExecutor $ Worker.run(Unknown Source)[na:1.7.0_45]

at java.lang.Thread.run(Unknown Source)[na:1.7.0_45]

下面是我的pom.xml

http://maven.apache.org/xsd/maven-4.0.0.xsd"     的xmlns =" HTTP://maven.apache.org/POM/4.0.0"的xmlns:=的xsi" HTTP://www.w3.org/2001/XMLSchema-instance">     4.0.0

<parent>
    <groupId>com.oreilly.springdata</groupId>
    <artifactId>spring-data-book</artifactId>
    <version>1.0.0.BUILD-SNAPSHOT</version>
    <relativePath>../pom.xml</relativePath>
</parent>

<artifactId>spring-data-book-rest-test1</artifactId>
<name>Spring Data Book - REST exporter</name>
<packaging>war</packaging>

<dependencies>

    <!-- Spring -->

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>${spring.version}</version>
    </dependency>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-web</artifactId>
        <version>${spring.version}</version>
    </dependency>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-oxm</artifactId>
        <version>${spring.version}</version>
    </dependency>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-orm</artifactId>
        <version>${spring.version}</version>
    </dependency>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-jdbc</artifactId>
        <version>${spring.version}</version>
    </dependency>

    <!-- Spring Data REST -->

<dependency>
    <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-jpa</artifactId>
    <version>1.5.0.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-rest-webmvc</artifactId>
    <version>2.0.0.RELEASE</version>
</dependency>

    <!--  dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-rest-webmvc</artifactId>
        <version>1.1.0.M1</version>
    </dependency>

    <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-jpa</artifactId>
        <version>1.3.0.RELEASE</version>
    </dependency-->

    <!-- Hibernate / JPA -->
    <dependency>
        <groupId>org.hibernate.javax.persistence</groupId>
        <artifactId>hibernate-jpa-2.0-api</artifactId>
        <version>1.0.1.Final</version>
    </dependency>

    <dependency>
        <!-- <groupId>org.hibernate</groupId> <artifactId>hibernate-entitymanager</artifactId> 
            <version>3.2.1.ga</version> -->

        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-entitymanager</artifactId>
        <version>4.1.6.Final</version>
        <scope>runtime</scope>
    </dependency>

    <!-- Database -->

    <dependency>
        <groupId>org.hsqldb</groupId>
        <artifactId>hsqldb</artifactId>
        <version>2.2.8</version>
        <scope>runtime</scope>
    </dependency>

    <!-- Web -->

    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>3.0.1</version>
        <scope>provided</scope>
    </dependency>

</dependencies>

<build>
<finalName>Tst1</finalName>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <version>2.1.1</version>
            <configuration>
                <failOnMissingWebXml>false</failOnMissingWebXml>
            </configuration>
        </plugin>

        <plugin>
            <groupId>org.eclipse.jetty</groupId>
            <artifactId>jetty-maven-plugin</artifactId>
            <version>9.0.0.RC2</version>
        </plugin>
    </plugins>
</build>

<repositories>
    <repository>
        <id>spring-libs-milestone</id>
        <url>http://repo.springsource.org/libs-milestone</url>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
    </repository>
</repositories>

1 个答案:

答案 0 :(得分:0)

这是jar依赖问题。

升级之后是我的pom.xml的样子。

http://maven.apache.org/xsd/maven-4.0.0.xsd"     的xmlns =&#34; HTTP://maven.apache.org/POM/4.0.0"的xmlns:=的xsi&#34; HTTP://www.w3.org/2001/XMLSchema-instance"&GT;     4.0.0

<parent>
    <groupId>com.oreilly.springdata</groupId>
    <artifactId>spring-data-book</artifactId>
    <version>1.0.0.BUILD-SNAPSHOT</version>
    <relativePath>../pom.xml</relativePath>
</parent>

<artifactId>spring-data-book-rest-test1</artifactId>
<name>Spring Data Book - REST exporter</name>
<packaging>war</packaging>

<dependencies>

    <!-- Spring -->

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>${spring.version}</version>
    </dependency>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-web</artifactId>
        <version>${spring.version}</version>
    </dependency>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-oxm</artifactId>
        <version>${spring.version}</version>
    </dependency>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-orm</artifactId>
        <version>${spring.version}</version>
    </dependency>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-jdbc</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>4.0.3.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>4.0.3.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-beans</artifactId>
        <version>4.0.3.RELEASE</version>
    </dependency>

    <!-- Spring Data REST -->

    <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-jpa</artifactId>
        <version>1.5.0.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-rest-webmvc</artifactId>
        <version>2.0.0.RELEASE</version>
    </dependency>

    <!-- dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-rest-webmvc</artifactId> 
        <version>1.1.0.M1</version> </dependency> <dependency> <groupId>org.springframework.data</groupId> 
        <artifactId>spring-data-jpa</artifactId> <version>1.3.0.RELEASE</version> 
        </dependency -->

    <!-- Hibernate / JPA -->
    <dependency>
        <groupId>org.hibernate.javax.persistence</groupId>
        <artifactId>hibernate-jpa-2.0-api</artifactId>
        <version>1.0.1.Final</version>
    </dependency>

    <dependency>
        <!-- <groupId>org.hibernate</groupId> <artifactId>hibernate-entitymanager</artifactId> 
            <version>3.2.1.ga</version> -->

        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-entitymanager</artifactId>
        <version>4.1.6.Final</version>
        <scope>runtime</scope>
    </dependency>

    <!-- Database -->

    <dependency>
        <groupId>org.hsqldb</groupId>
        <artifactId>hsqldb</artifactId>
        <version>2.2.8</version>
        <scope>runtime</scope>
    </dependency>

    <!-- Web -->

    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>3.0.1</version>
        <scope>provided</scope>
    </dependency>

</dependencies>

<build>
    <finalName>Tst1</finalName>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <version>2.1.1</version>
            <configuration>
                <failOnMissingWebXml>false</failOnMissingWebXml>
            </configuration>
        </plugin>

        <plugin>
            <groupId>org.eclipse.jetty</groupId>
            <artifactId>jetty-maven-plugin</artifactId>
            <version>9.0.0.RC2</version>
        </plugin>
    </plugins>
</build>

<repositories>
    <repository>
        <id>spring-libs-milestone</id>
        <url>http://repo.springsource.org/libs-milestone</url>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
    </repository>
</repositories>