2016-04-07 13 views
0

次のコードは、私にNPEを投げます。何がうまくいかないのか分かりません。 currentStateを初期化するコードが見つかりません。誰でも助けることができますか?Builderを使用している場合、AbstractStateMachine.java:591のNullPointerException

public class TestSMApplication { 

StateMachine<String, String> buildMachine1() throws Exception { 
    Builder<String, String> builder = StateMachineBuilder.builder(); 
    builder.configureConfiguration().withConfiguration() 
      .listener(listener()); 

    builder.configureStates() 
      .withStates() 
      .initial("OPEN") 
      .end("CLOSED") 
      .states(new HashSet<String>(Arrays.asList("OPEN", "PROGRESS", 
        "CLOSED"))); 

    builder.configureTransitions().withExternal().source("OPEN") 
      .target("PROGRESS").event("RUN").and().withExternal() 
      .source("OPEN").target("TERMINATE").event("STOP"); 

    StateMachine<String, String> sm = builder.build(); 
    return sm; 
} 

public org.springframework.statemachine.listener.StateMachineListener<String, String> listener() { 
    return new StateMachineListenerAdapter<String, String>() { 
     @Override 
     public void stateChanged(State<String, String> from, 
       State<String, String> to) { 
      System.out.println("State change to " + to.getId()); 
     } 
    }; 
} 

public static void main(String[] args) throws Exception { 
    TestSMApplication tsm = new TestSMApplication(); 
    StateMachine<String, String> m1 = tsm.buildMachine1(); 
    m1.start(); 
    m1.sendEvent(Events.PROCESSING_SUCCEEDED.name()); 
} 

}

私が使用している: org.springframework.statemachine:春 - ステートマシンコア:1.1.0.M2

おかげフレディ

答えて

0

クレイジーを、私は再現することはできませんエラーが発生しましたが、コードに貼り付けエラー&が見つかりました。

package demo.sm; 

import java.util.Arrays; 
import java.util.HashSet; 

import org.springframework.statemachine.StateMachine; 
import org.springframework.statemachine.config.StateMachineBuilder; 
import org.springframework.statemachine.config.StateMachineBuilder.Builder; 
import org.springframework.statemachine.listener.StateMachineListenerAdapter; 
import org.springframework.statemachine.state.State; 

public class AnotherTest { 

     StateMachine<String, String> buildMachine1() throws Exception { 
      Builder<String, String> builder = StateMachineBuilder.builder(); 
      builder.configureConfiguration().withConfiguration() 
        .listener(listener()); 

      builder.configureStates() 
        .withStates() 
        .initial("OPEN") 
        .end("CLOSED") 
        .states(new HashSet<String>(Arrays.asList("OPEN", "PROGRESS", 
          "CLOSED"))); 

      builder.configureTransitions() 
       .withExternal() 
        .source("OPEN") 
        .target("PROGRESS") 
        .event("RUN") 
        .and() 
       .withExternal() 
        .source("PROGRESS") 
        .target("CLOSED") 
        .event("STOP"); 

      StateMachine<String, String> sm = builder.build(); 
      return sm; 
     } 

     public org.springframework.statemachine.listener.StateMachineListener<String, String> listener() { 
      return new StateMachineListenerAdapter<String, String>() { 
       @Override 
       public void stateChanged(State<String, String> from, 
         State<String, String> to) { 
        System.out.println("State change to " + to.getId()); 
       } 
      }; 
     } 

     public static void main(String[] args) throws Exception { 
      TestSMApplication tsm = new TestSMApplication(); 
      StateMachine<String, String> m1 = tsm.buildMachine1(); 
      m1.start(); 
      m1.sendEvent("RUN"); 
      m1.sendEvent("STOP"); 
     } 
} 
+0

NPEの位置は、591行目がresetStateMachine関数内にあり、コードでそのメソッドが実行されることはありません。 –

関連する問題