web-dev-qa-db-fra.com

CrudRepository ne peut pas être résolu en un type

Je travaille sur un projet Spring Boot (généré par Spring Initializr), à l'aide de Maven. Je souhaite créer un CrudRepository, mais le message d'erreur "Impossible de résoudre CrudRepository en un type" et le package org.springframework.data.repository ne contient pas la classe CrudRepository. J'ai essayé de suivre un tas de tutoriels pour comprendre ce qui ne va pas et je n'ai rien trouvé. Mon POM me semble juste, je n'ai pas d'échec de construction lorsque je lance maven clean et les objectifs du package, j'ai essayé de mettre à jour le projet et de télécharger les sources, mais rien ne fonctionne. Eclipse ne trouve pas la classe CrudRepository.

Voici mon fichier 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>

Et mon référentiel:

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> {

}

Merci de votre aide

Modifier:

J'ai mis à jour le projet avec "Maven => Projet de mise à jour" dans Eclipse. Après cela, j'ai eu cette erreur dans la vue "Problèmes":

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

Je ne suis pas sûr de savoir comment résoudre ceci/quel est le lien avec mon problème avec CrudRepository.

5
Carrm

Il semble que cela ait été un problème avec les bibliothèques Maven. J'ai supprimé le contenu entier dans .m2/repository et exécuté Maven > Update project dans Eclipse, de sorte que Maven devait télécharger à nouveau le contenu complet. Plus d'erreur après ça!

Modifier

Comme indiqué par user3578953, exécuter maven-clean a le même effet que j'ai fait en supprimant tout le contenu du référentiel m2. Je ne connaissais pas grand chose à propos de Maven lorsque j'ai posé cette question pour la première fois, mais c'est évidemment un meilleur moyen de résoudre le problème.

7
Carrm

P.S - Je connais la réponse originale utilisée interface pas classe. Mais comme nous ne pouvons plus poser la même question. La réponse est pour le débutant qui peut manquer la partie interface. 

Nous obtenons généralement ce type d'erreur lorsque nous créons le référentiel en tant que classe au lieu d'interface. CrudRepository est une interface, vous pouvez probablement l'étendre à l'aide d'une interface uniquement:

Mauvais (Parfois, lorsque nous créons le référentiel, nous créons une classe par erreur):

 public class MovieRepository extends CrudRepository<Movie, Long>

Erreur: CrudRepository ne peut pas être résolu en un type

Je viens de le changer en interface :

public interface MovieRepository extends CrudRepository<Movie, Long>
12
Pinaki Mukherjee

vérifiez mavendependencies pour spring-data-jpa -... RELEASE.jar s'il contient CrudRepository.class sous le paquet org.springframework.data.jpa.repository 

Si le fichier de classe est là, maven-> update project et run-> maven-clean.

Si le fichier de classe n'y est pas, recherchez simplement le package dans mvnrepository.com.

0
user3578953

Tout semble bien avec vos dépendances, essayez les variantes suivantes:

  1. construire un projet avec Maven à partir de la ligne de commande ($ mvn spring-boot:run)
  2. Dans Eclipse IDE: right click on project-Maven-update project
0
Alex Efimov

Voici comment j'ai fait disparaître le message: 

 enter image description here

0
zee

j'ai eu le même problème, supprimez tout le contenu .m2 et réimportez Maven. Ça marche!

0
samivic