Hi All,
I'm just starting to play with Guice - the beautiful lightweight DI
framework, I encountered a simple problem, didn't find answer over
internet, I guess someone here can help me, thanks very much in
advance.
I have several Java files:
================================
Player.java - The interface that I defined.
================================
package net.jiakuan.test.sample4;
public interface Player {
public void bat();
public void bowl();
}
================================
GoodPlayer.java
================================
package net.jiakuan.test.sample4;
public class GoodPlayer implements Player {
public void bat() {
System.out.println("I can hit any ball");
}
public void bowl() {
System.out.println("I can also bowl");
}
}
================================
BadPlayer.java
================================
package net.jiakuan.test.sample4;
public class BadPlayer implements Player {
public void bat() {
System.out.println("I think i can face the ball");
}
public void bowl() {
System.out.println("I dont know bowling");
}
}
================================
Good.java
================================
package net.jiakuan.test.sample4;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import com.google.inject.BindingAnnotation;
@BindingAnnotation
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.LOCAL_VARIABLE)
public @interface Good {
}
================================
Bad.java
================================
package net.jiakuan.test.sample4;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import com.google.inject.BindingAnnotation;
@Retention(RetentionPolicy.RUNTIME)
@BindingAnnotation
@Target(ElementType.LOCAL_VARIABLE)
public @interface Bad {
}
================================
PlayerModule.java
================================
package net.jiakuan.test.sample4;
import com.google.inject.Binder;
import com.google.inject.Module;
public class PlayerModule implements Module {
public void configure(Binder binder) {
binder.bind(Player.class).annotatedWith(Good.class)
.to(GoodPlayer.class);
binder.bind(Player.class).annotatedWith(Bad.class).to
(BadPlayer.class);
}
}
================================
PlayerClient.java
================================
package net.jiakuan.test.sample4;
import com.google.inject.Guice;
import com.google.inject.Injector;
import com.google.inject.Module;
public class PlayerClient {
public static void main(String[] args) {
PlayerModule module = new PlayerModule();
Injector injector = Guice.createInjector(new Module[] { module });
@Good
Player player = injector.getInstance(Player.class);
player.bat();
player.bowl();
}
}
When I ran PlayerClient, the following error message was printed in
console, I could not find what was wrong with my code:
----------------------------------------------------------------------------------------------------------------------------------------------
Exception in thread "main" com.google.inject.ConfigurationException:
Guice configuration errors:
1) No implementation for net.jiakuan.test.sample4.Player was bound.
while locating net.jiakuan.test.sample4.Player
1 error
at com.google.inject.InjectorImpl.getProvider(InjectorImpl.java:784)
at com.google.inject.InjectorImpl.getProvider(InjectorImpl.java:743)
at com.google.inject.InjectorImpl.getInstance(InjectorImpl.java:793)
at net.jiakuan.test.sample4.PlayerClient.main(PlayerClient.java:18)
----------------------------------------------------------------------------------------------------------------------------------------------
Anyone can help me? thanks in advance.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"google-guice" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/google-guice?hl=en
-~----------~----~----~----~------~----~------~--~---