Ich versuche Guice. Ich habe ein einfaches Beispiel gemacht, das dem Beispiel im Handbuch Guice Getting Started sehr ähnlich ist.Warum erkennt Guice aus der TestNG-Zustellung nicht @ javax.inject.Inject, während Guice aus dem com.google.inject-Paket stammt?
Aber es hat seit einiger Zeit nicht und sagte:
kann nicht einen geeigneten Konstruktor in mypack.ServiceUser finden. Klassen müssen entweder einen (und nur einen) Konstruktor haben, der mit @Inject oder einen Zero-Argument-Konstruktor annotiert ist, der nicht privat ist. bei mypack.ServiceUser.class (ServiceUser.java:14) während Ortung mypack.ServiceUser
Das Problem bei den Importen war. Ich habe sowohl Google Guice als auch TestNG an das Projekt angehängt. Und ich importierte Klassen von org.testng.guice
Paket. Aber Annotation Inject
wurde aus dem javax.inject
Paket importiert. Nachdem ich diesen Import in org.testng.guice.Inject
geändert habe, begann mein Programm zu arbeiten.
Aber danach spielte ich mit Importen ein wenig mehr. Und ich habe alle org.testng
Importe zu com.google.inject
geändert. Das Programm hat noch funktioniert. Danach ging ich zurück zur @Inject
Annotation und änderte seinen Import in javax.inject.Inject
(wie es in meiner allerersten kaputten Version war). Und das Programm hat auch danach funktioniert.
Ich überprüfte noch einmal: Guice von TestNG-Paketen funktioniert nicht mit javax.inject.Inject
, während Guice von Google-Paketen (com.google.inject
) normal damit arbeitet.
Warum ist es so komisch?
p.s. Ich benutze die letzten Versionen von Guice und TestNG (guice-3.0-rc1 und testng-5.14.5).
Danke für die Erklärung und für die neue Version. – Roman
Ich bekomme den gleichen Fehler, wenn ich nur com.google.inject und java.inject.Inject verwende. – ripper234