2016-08-16 3 views
-1

Ich bin den folgenden Code in Java verwendet. Ich weiß nicht, was ich getan habe Falsch hier.Guice Abhängigkeit Injektor Nullzeiger Ausnahme

Meine Hauptdatei ist: suchen und überprüfen

package com.sample.test;  
import com.google.inject.Guice; 
import com.google.inject.Injector; 

public class mymain {  
public static void main(String[] args) {  
Injector injector = Guice.createInjector(new AppInjectory()); 
ApplicationExample obj =        injector.getInstance(ApplicationExample.class); 
obj.sendMessage();  
}  
} 

Meine Schnittstelle ist: suchen und

package com.sample.test;  
public interface MessageService { 
boolean sendMessage(String msg, String receipient); 
} 

Meine Config-Datei und prüfen wird aussehen überprüfen

package com.sample.test; 
import com.google.inject.AbstractModule;  
public class AppInjectory extends AbstractModule {  
@Override 
protected void configure() {  
bind(MessageService.class).to(EmailService.class);  
}  
} 

meine Anwendungsdatei ist: schau und prüfe

package com.sample.test; 
import javax.inject.Inject;  
    public class ApplicationExample {   
    private MessageService service;   
    @Inject 
    public void setService(MessageService svc){ 
    this.service=svc; 
    }   
    public void sendMessage() { 
    System.out.println(“I am here”); 
    service.sendMessage(“welcome”, “java”);   
    } 
    } 

meine Service-Klasse ist: suchen und überprüfen

package com.sample.test; 
//import com.google.inject.Singleton; 
import javax.inject.Singleton; 

@Singleton 
public class EmailService implements MessageService { 

public boolean sendMessage(String msg, String receipient) { 
//some fancy code to send email 
System.out.println(“Email Message sent to “+receipient+” with message=”+msg); 
return true; 
}  
} 

Here I Null-Zeiger Ausnahme .Was falsch bin immer habe ich here.?please diese issue.I zu beheben helfen, den Fehler-Stack-Trace hier hinzugefügt. Bitte schauen Sie es sich an.

ERROR:

Exception in thread “main” I am here java.lang.NullPointerException at com.sample.test.ApplicationExample.sendMessage(ApplicationExample.java:16) at com.sample.test.mymain.main(mymain.java:13)

+2

Mögliches Duplikat [? Was für eine Nullpointer ist und wie repariere ich es] (http://stackoverflow.com/questions/218384/ what-is-a-nullpointerexception-and-wie-do-i-fix-it) – sidgate

+0

Bitte formatieren Sie Ihren Code (und machen Sie es fit). – zhon

+0

Gibt es einen Grund, warum 'ApplicationExample' die Setter-Injektion und nicht die Konstruktor-Injektion verwendet? Konstruktorinjektion würde es einfacher machen, über die Invariante zu argumentieren, dass der "MessageService" nicht null sein darf. Das heißt, ich glaube, dass der Code, den Sie gezeigt haben, funktionieren sollte. Ist das der eigentliche Code, der den Fehler verursacht? –

Antwort

-1

Das Problem liegt in dieser Zeile:

ApplicationExample obj = injector.getInstance(ApplicationExample.class); 

In Ihrem AppInjectory Modul haben Sie nicht Ihre ApplicationExample Schnittstelle auf eine Implementierung gebunden. Haben Sie vielleicht meinen, dies zu tun (von Ihrem Modul abgezogen):

MessageService obj = injector.getInstance(MessageService.class); 
+0

http://www.journaldev.com/2403/google-guice-dependency-injection-example-tutorial#comment-36062 Schauen Sie sich dieses Beispiel an.Hier haben sie verfolgt, was ich hier gemacht habe. –

+0

Bitte erklären Sie mir, wo ich Fehler gemacht habe. Im Beispiel (http://www.journaldev.com/2403/google-guice-dependency-injection-example-tutorial#comment-36062) .it funktioniert –

+0

Fügen Sie das stacktrace zu Ihrem Beitrag hinzu, und stellen Sie sicher, das zu erwähnen Codezeilen die Stacktrace beinhaltet. – nbokmans

Verwandte Themen