我在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
感谢您的帮助!
答案 0 :(得分:3)
您正在使用static
。 Inject
仅适用于实例变量和构造函数。
您需要在模块中使用requestStaticInjection
。
答案 1 :(得分:0)
您使用的是http://www.playframework.org/modules/guice的guice模块吗?那个应该用静态场注入。