2017-10-02 7 views
-1

다음을 실행하려고하지만 userService.getName()에서 null 포인터가 있습니다. 실없이 그것은 잘 작동하지만, 실로 그것은 당신은 당신의 Scheduler 생성자상의 @Inject를 사용하지만 수동으로 인스턴스화 널 포인터 예외실행 예외 : 호출 가능 메서드 호출 중

  public class Sheduler implements Callable{ 
      private UserService userService; 
      private SchedulerExecuterService scheduler=Executers.newScheduledThreadpool(2); 
      @Inject 
      public Sheduler (UserService userService){ 
      this.userService = userService; 
      } 

      Future future = scheduler.submit(new Callable(){ 
      @override 
      public String call() throws Exception{ 
      **return userService.getName();//NUll pointer Exception** 
      } 
      )} 

      public void startpool(){ 
      final Runnable beeper = new Runnable(){ 
      public void run(){ 
      UserService userService = new UserService(); 
      Sheduler scd=new Sheduler (UserService userService); 

      future.get(); 
      } 
      } 


      scheduleAtFixedRate(beeper,5,5,TimeUnit.SECONDS); 
} 

public static void main(){ 
Sheduler scduler=new Sheduler(); 
    scduler.startpool(); 
} 
+0

그래서 userService가 인스턴스화되지 않습니다 – Stultuske

+0

어떻게'Sheduler' 인스턴스를 만드십니까? – luk2302

+0

죄송합니다.이 코드를 잊었습니다. UserService userService = new UserService(); @stultuske 인스턴스화했습니다 –

답변

0

을 던지고있다. UserService은 주입되지 않으므로 NullPointerException을 던지는 null입니다.