2017-10-02 5 views
-1

Je suis en train d'exécuter la suite, mais je fais face à null pointeur à userService.getName(); sans fil, il fonctionne très bien, mais avec un fil, il jette NullPointerExceptionException d'exécution: lors de l'appel de la méthode depuis Callable

  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

Ainsi, votre userService n'est pas instancié – Stultuske

+0

Comment créer une instance 'Sheduler'? – luk2302

+0

désolé j'ai oublié ce code UserService userService = new UserService(); @stultuske Je l'ai instancié –

Répondre

0

Vous utilisez un @Inject sur votre constructeur Scheduler mais toujours instancier manuellement. Votre UserService n'est jamais injecté et est donc nul en lançant le NullPointerException.