2017-10-02 3 views
-1

私は次のように実行しようとしていますが、私はuserService.getName()でnullポインタに直面しています。スレッドのない は、それが正常に動作しているが、スレッドとそれはあなたのSchedulerコンストラクタに@Injectを使用していますが、まだそれを手動でインスタンス化し、nullポインタ例外実行例外:呼び出し可能メソッドから呼び出し中

  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を投げることはありません。

関連する問題