注入类的Guice Null指针错误

时间:2012-02-14 14:11:45

标签: java playframework guice

我在java play框架中使用guice。

我有一个简单的命令界面,以及在java中创建的实现者:

public interface ICommand {
public void test();
}

和实施者

public class CommandImpl implements ICommand {
@Override
public void test() {
System.out.println("test");
}

然后是@Inject的绑定类:

public class ICommandModule extends AbstractModule{
@Override
protected void configure() {
bind(ICommand.class).to(CommandImpl.class);
}
}

当我尝试这样的命令时:

@Inject
private static ICommand Command;
public static void index() {
Command.test();
render();
}

我收到这些错误:

来自网络浏览器:

Execution exception
NullPointerException occured : null

从控制台:

Execution exception (In /app/controllers/Application.java around line 27) NullPointerException occured : null
play.exceptions.JavaExecutionException  
  at play.mvc.ActionInvoker.invoke(ActionInvoker.java:231)  
  at Invocation.HTTP Request(Play!) 
Caused by: 
java.lang.NullPointerException  
  at controllers.Application.index(Application.java:27)     
  at play.mvc.ActionInvoker.invokeWithContinuation(ActionInvoker.java:548)  
  at play.mvc.ActionInvoker.invoke(ActionInvoker.java:502)  
  at play.mvc.ActionInvoker.invokeControllerMethod(ActionInvoker.java:478)  
  at play.mvc.ActionInvoker.invokeControllerMethod(ActionInvoker.java:473)  
  at play.mvc.ActionInvoker.invoke(ActionInvoker.java:161)  ... 1 more

感谢您的帮助!

2 个答案:

答案 0 :(得分:3)

您正在使用staticInject仅适用于实例变量和构造函数。 您需要在模块中使用requestStaticInjection

答案 1 :(得分:0)

您使用的是http://www.playframework.org/modules/guice的guice模块吗?那个应该用静态场注入。