Je suis nouveau pour travailler sur la création de services Web (api Restful). suite à un tutoriel simple de Java Brains for Restful web services J'obtiens l'erreur qui dit quelque chose comme "Dépendances non satisfaites pour le type Set avec des qualificatifs @Default"

J'ai recherché différentes questions ici, j'ai essayé les choses ci-dessous:

  1. téléchargé un nouveau serveur et connecté à mon projet et supprimé l'ancien serveur.
  2. mis à jour les dépendances de goyave et ajouté son jar à mon projet

Toujours confronté à l'erreur.

Ci-dessous se trouve le journal des erreurs du serveur.

Grave: exception lors du chargement de l'application: échec du déploiement CDI: WELD-001408: dépendances non satisfaites pour le type Set avec des qualificatifs @Default au point d'injection [BackedAnnotatedParameter] Paramètre 1 de [BackedAnnotatedConstructor] @Inject com.google.common.util.concurrent.ServiceManager (Défini) dans com.google.common.util.concurrent.ServiceManager. (ServiceManager.java:0) org.jboss.weld.exceptions.DeploymentException: WELD-001408: Dépendances non satisfaites pour le type Défini avec des qualificatifs @Default au point d'injection [ BackedAnnotatedParameter] Paramètre 1 de [BackedAnnotatedConstructor] @Inject com.google.common.util.concurrent.ServiceManager (Set) à com.google.common.util.concurrent.ServiceManager. (ServiceManager.java:0)

C'est une classe de service aux étudiants qui fournit des données.

public class StudentService {
    public List<Student> getAllData() {
        Student s1 = new Student(1, "Sagar", 20);
        Student s2 = new Student(2, "Puneet", 23);
        List<Student> list = new ArrayList<>();
        list.add(s1);
        list.add(s2);
        return list;
    }
}

Ci-dessous ma classe API

@Path("/myfirstapi")
public class MyFirstAPI {
StudentService ss=new StudentService();
@GET
@Produces(MediaType.APPLICATION_XML)
public List<Student> gettext() {
    return ss.getAllData();
    }
}
6
Sagar Khurana 17 janv. 2017 à 14:39

2 réponses

Meilleure réponse

La cause de cette erreur est généralement une mauvaise version de Guava. Vous pouvez avoir une version de Guava <16. Vous devriez vérifier votre chemin de classe.

Je peux voir 2 solutions:

  • Si vous utilisez CDI (vous ne semblez pas le faire), mettez à jour la version de Guava avec la version> = 16.
  • Sinon, désactivez CDI (supprimez beans.xml s'il est présent dans le chemin de classe et désactivez l'analyse implicite sur votre serveur d'applications).
5
Rouliboy 17 janv. 2017 à 20:20

Votre serveur Web contient probablement déjà la bibliothèque goyave et n’a aucun problème avec elle. Donc, ce dont vous avez besoin est d'empêcher votre bibliothèque de goyave d'entrer dans le fichier war. Certains disent (Utilisation de Jersey 2.1 avec CDI), que

définir simplement la dépendance goyave sur fourni (ou test) dans maven résout le problème.

J'utilise gradle donc je mets la dépendance dans compileOnly set:

compileOnly 'org.glassfish.jersey.core:jersey-client:2.0.1'

J'ai d'abord couru gradle dependencies pour savoir ce qui attirait la goyave. Finalement, j'ai examiné ma guerre pour confirmer que la goyave n'était plus là.

0
Jarekczek 15 juin 2017 à 11:44