运行状态机示例的问题

时间:2015-06-13 09:27:43

标签: spring-statemachine

祝贺弹簧状态机,昨天我发现它并且一直在尝试,特别是在STS中运行的旋转门示例。我发现构建FSM非常简单直观。

因为Spring shell在STS中不能很好地工作,所以我跟踪了从参考文档中的命令行运行示例的说明,

  

" java -jar   弹簧的statemachine样本-旋转门-1.0.0.BUILD-SNAPSHOT.jar"

, 但运行它有错误

  
    

"没有主要的清单属性,在spring-statemachine-samples-turnstile-1.0.0.BUILD-SNAPSHOT.jar"。

  

虽然甚至不是使用gradle的新手,但我尝试通过在jar部分中将此行添加到build.gradle来修复此问题

  
    

" manifest.attributes [' Main-Class'] =' demo.turnstile.Application'"     (它没有处理我所知的各种子项目)但是遇到了这个错误     " NoClassDefFoundError:org / springframework / shell / Bootstrap"。

  

如果可以从gradle运行样本,您可以将它们包含在参考文档中吗?我尝试使用

运行示例
  
    

gradle run     但它没有与shell脚本的交互。

  

2 个答案:

答案 0 :(得分:1)

示例设计为可执行jar和shell运行,这样您就可以进行交互,而无需每次更改都需要重新编译。您的错误表明您没有按照文档中的说明构建该示例jar。

./gradlew clean build -x test

这将自动使用spring boot插件,它将为jar元信息添加必要的jar清单标头,使其成为真正的可执行jar。基本上每个样本都是一个春季启动应用程序。

答案 1 :(得分:0)

Windows环境中构建SM sample个项目:

  1. 打开命令提示符(windows key + r -->cmd-->Enter),将目录更改为项目根文件夹spring-statemachine-master(在提取的文件夹内)。

  2. 运行gradlew install以将所有spring依赖项复制到本地计算机。

  3. 运行gradlew clean build -x test以构建弹簧外壳罐。礼貌Janne
  4. 理想情况下,这些步骤应该构建所有.jar,查看jar文件的相应示例项目的\build\libs文件夹。

    运行任何其他java jar文件java -jar [jar-file-name.jar](确保将目录更改为jar文件目录位置)。

    我被困的另一件事是,如何向SM发送事件: 这就是sm event EVENT_NAME_AS_DEFINED_IN_CLASSRef 例如:sm event RINSE - >到washer项目