2017-02-22 169 views
2

我正在使用Maven在Spring Boot項目(由Spring Initializr生成)上工作。我想創建一個CrudRepository,但是我收到錯誤「CrudRepository無法解析爲某個類型」,而包org.springframework.data.repository不包含CrudRepository類。我試圖按照一堆教程來了解什麼是錯誤的,但我沒有找到任何東西。我的POM對我來說很合適,當我運行maven clean和package目標時,我沒有任何構建失敗,我嘗試更新項目並下載源代碼,但沒有任何效果。 Eclipse無法找到CrudRepository類。CrudRepository無法解析爲類型

這裏是我的POM文件:

<?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>com.myquickstart</groupId> 
    <artifactId>SpringQuickstart</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <packaging>jar</packaging> 

    <name>SpringQuickstart</name> 
    <description>Demo project for Spring Boot</description> 

    <parent> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-parent</artifactId> 
     <version>1.5.1.RELEASE</version> 
     <relativePath/> <!-- lookup parent from repository --> 
    </parent> 

    <properties> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
     <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> 
     <java.version>1.8</java.version> 
    </properties> 

    <dependencies> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter</artifactId> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-test</artifactId> 
      <scope>test</scope> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-web</artifactId> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-data-rest</artifactId> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-data-jpa</artifactId> 
     </dependency> 
    </dependencies> 

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


</project> 

而且我的倉庫:

package com.myquickstart.repositories; 

import org.springframework.stereotype.Repository; 
import org.springframework.data.repository.CrudRepository; 
import com.myquickstart.entities.Movie; 

@Repository 
public interface MovieRepository extends CrudRepository<Movie, Long> { 

} 

感謝您的幫助

編輯:

我已經更新項目在Eclipse中使用「Maven => Update項目」。在那之後,我在「問題」的觀點得到這個錯誤:

C:/Users/carrm/.m2/repository/org/hibernate/hibernate-core/5.0.11.Final/hibernate-core-5.0.11.Final.jar' in project 'SpringQuickstart' cannot be read or is not a valid ZIP file 

我不知道知道如何解決這個問題/什麼是我的CrudRepository問題的鏈接。在命令行($ mvn spring-boot:run

  • 在Eclipse IDE

    1. 建設項目與Maven:right click on project-Maven-update project
  • +0

    您是如何更新項目的? –

    +0

    我在Eclipse中使用了「Maven => Update project」 – Carrm

    回答

    0

    一切似乎與你的依賴關係不錯,請嘗試下一個變種是Maven庫的一個問題。我刪除了.m2/repository中的全部內容,並在Eclipse中運行Maven > Update project,以便Maven不得不再次下載整個內容。在此之後沒有更多的錯誤!

    +0

    在發佈我的問題之前,我做了第二個變體;我嘗試了第一個,但它也不起作用。我用「更新項目」工具 – Carrm

    0

    CrudRepository是一個接口不是類。將extends替換爲implements

    +0

    產生的錯誤編輯了我的帖子。這是錯誤的。接口擴展了其他接口。他們不執行它們。 – Markus

    +0

    正如馬庫斯所言! –

    -1

    當我們將類創建爲類而不是接口時,我們通常會遇到這種類型的錯誤。 CrudRepository是一個接口,你最有可能只使用一個接口擴展它:

    錯誤(有些時候,當我們創建了倉庫,我們創建了錯誤的類):

    public class MovieRepository extends CrudRepository<Movie, Long> 
    

    Error: CrudRepository cannot be resolved to a type

    它只是改變界面

    public interface MovieRepository extends CrudRepository<Movie, Long> 
    
    +0

    你可能想再次閱讀這個問題,因爲我已經有一個接口,而不是一個類。問題是別的(檢查驗證的答案)。 – Carrm

    +0

    你是正確的,因爲你定義它作爲接口和清理Maven存儲庫的幫助。但是「CrudRepository無法解析爲類型」錯誤也出於上述原因。答案更多地針對可能錯過將其聲明爲接口的其他用戶。我的回答是基於錯誤。 –