2015-06-24 39 views
2

我嘗試使用Spring + JPA + PostgreSQL。嵌套異常是java.lang.NoClassDefFoundError:org/springframework/data/mapping/IdentifierAccessor

當我單擊 「調試」 我得到異常:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jpaMappingContext': Invocation of init method failed; nested exception is java.lang.NoClassDefFoundError: org/springframework/data/mapping/IdentifierAccessor 

結構的設計方案是

enter image description here

application.properties

spring.datasource.url = jdbc:postgresql://localhost:5432/gastos 
spring.datasource.username = postgres 
spring.datasource.password = ******* 

spring.jpa.show-sql = true 

spring.jpa.hibernate.ddl-auto = update 

spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy 

spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.PostgreSQL9Dialect 

Application.java

import org.springframework.boot.SpringApplication; 
import org.springframework.boot.autoconfigure.SpringBootApplication; 
import org.springframework.context.annotation.ComponentScan; 

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

的pom.xml

<?xml version="1.0" encoding="UTF-8"?> 
<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> 

    <groupId>org.springframework</groupId> 
    <artifactId>gastos4</artifactId> 
    <version>0.1.0</version> 

    <parent> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-parent</artifactId> 
     <version>1.2.4.RELEASE</version> 
    </parent> 

    <dependencies> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-web</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.data</groupId> 
      <artifactId>spring-data-jpa</artifactId> 
      <version>1.8.0.RELEASE</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-data-jpa</artifactId> 
      <version>1.2.4.RELEASE</version> 
     </dependency> 
     <dependency> 
      <groupId>org.postgresql</groupId> 
      <artifactId>postgresql</artifactId> 
      <version>9.4-1201-jdbc41</version> 
     </dependency> 
    </dependencies> 

    <properties> 
     <java.version>1.8</java.version> 
    </properties> 


    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.springframework.boot</groupId> 
       <artifactId>spring-boot-maven-plugin</artifactId> 
      </plugin> 
     </plugins> 
    </build> 

</project> 

我沒有找到在網絡的解決方案。我究竟做錯了什麼?

+0

不在CLASSPATH中放置了一些依賴項,這就是NoClassDefFoundError所說的......所以看看它引用的類以及它的依賴關係 –

+0

@NeilStockton對不起,你能告訴我怎麼做?我在Spring和Java世界很新手。 –

回答

0

嘗試添加彈簧數據共享核心到您的POM

<dependency> 
<groupId>org.springframework.data</groupId> 
<artifactId>spring-data-commons-core</artifactId> 
<version>1.0.0.RELEASE</version> 
</dependency> 
+0

保持錯誤 –

+0

IdentifierAccessor - 請參閱 https://github.com/spring-projects/spring-data-commons/tree/master/src/main/java/org/springframework/data/mapping – KDP

+0

我加了spring -data-commons-1.9.2.RELEASE和我得到一個新的錯誤,說'java.lang.NoSuchMethodError:org.springframework.data.repository.config.AnnotationRepositoryConfigurationSource。 (Lorg/springframework/core/type/AnnotationMetadata; Ljava/lang/Class; Lorg/springframework/core/io/ResourceLoader; Lorg/springframework/core/env/Environment;)V' –

0

我有同樣的問題,奇怪的是我用替換依賴彈簧數據的JPA解決了這個問題:

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