Ошибка нулевого указателя на введенном классе - PullRequest
1 голос
/ 14 февраля 2012

Я использую Guice с Java Play Framework.

У меня простой командный интерфейс, и разработчик, созданный в 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 ]

3 голосов
/ 14 февраля 2012

Вы используете static.Inject работает только с переменной экземпляра и конструкторами.Вам нужно использовать requestStaticInjection в вашем модуле.

0 голосов
/ 15 февраля 2012

Используете ли вы модуль guice от http://www.playframework.org/modules/guice? Это должно быть работа с инжекцией статического поля.

...