SSM集成activiti6.0错误集锦(一)

项目环境

  • Maven构建
  • 数据库:Orcle12c
  • 服务器:Tomcat9
  • <java.version>1.8</java.version>
  • <activiti.version>6.0.0</activiti.version>
  • <springframework.version>5.0.4.RELEASE</springframework.version>
  • <mybatis.version>3.4.5</mybatis.version>

问题

问题一:java.lang.ClassNotFoundException: com.fasterxml.jackson.databind.exc.InvalidDefinitionException

  • 出现原因:Jackson和Spring版本不兼容问题,activiti6中自带的Jackson版本是2.7.5,和spring5不兼容,Jackson版本过低
  • 解决思路:查询pom中是否存在jacksonjar包引用,如果存在则在pom的activiti引用中排除jackson的jar包引用
  • 解决步骤
    • 查看pom引用jar,如下图所示,点击4——>使用3搜索,可以看见activiti-engine下依赖很多jackson的低版本的jar。2.7.5版本和Spring5一定不兼容

                            图一

    • 在pom的activiti-engine下排除关于jackson的引用,如下
      <!-- activiti-engine-->
          <dependency>
              <groupId>org.activiti</groupId>
              <artifactId>activiti-engine</artifactId>
              <version>${activiti.version}</version>
              <exclusions>
                  <exclusion>
                      <groupId>com.fasterxml.jackson.core</groupId>
                      <artifactId>jackson-core</artifactId>
                  </exclusion>
                  <exclusion>
                      <groupId>com.fasterxml.jackson.core</groupId>
                      <artifactId>jackson-databind</artifactId>
                  </exclusion>
              </exclusions>
          </dependency> 
      
              

      如果找不到相关的<groupId>和<artifactId>,可以双击图一中的标记2(也就是相关的依赖jar),将会进入到如下界面,找到相关的<groupId>和<artifactId>

    • 重新引入高版本Jackson
      <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core -->
          <dependency>
              <groupId>com.fasterxml.jackson.core</groupId>
              <artifactId>jackson-core</artifactId>
              <version>2.9.5</version>
          </dependency>
          <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
          <dependency>
              <groupId>com.fasterxml.jackson.core</groupId>
              <artifactId>jackson-databind</artifactId>
              <version>2.9.5</version>
          </dependency>
    • 强制更新maven项目,解决问题

问题二:Could not open ServletContext resource [diagrams/test.bpmn]

  • 出现原因:在项目启动时自送部署流程的相关配置路径问题,如下图

  • 解决办法:在路径前面加上classpath:  ,代表在当前资源文件路径下查找
    • 如下图,修改自动部署流程路径

问题三:No qualifying bean of type 'org.activiti.engine.ProcessEngine' is defined

  • 问题场景
    • 我的activiti.cfg.xml中配置如下
      <bean id="processEngineConfiguration" class="org.activiti.spring.SpringProcessEngineConfiguration">
              <!-- 配置数据源,和系统使用同一个数据源-->
                <property name="dataSource" ref="dataSource" />
                <property name="databaseSchemaUpdate" value="true" />
                <!-- 统一的事务管理 -->
                <property name="transactionManager" ref="transactionManager" />
                <property name="activityFontName"  value="宋体" />
                <property name="labelFontName"  value="宋体" />
                <property name="deploymentResources">
                  <list>
                      <value>classpath:diagrams/test.bpmn</value>
                  </list>
              </property>
                <property name="beans">
                  <map>
                      <entry key="myService" value-ref="myService" />
                  </map>
              </property>
          </bean>
          
          <bean id="processEngine" class="org.activiti.spring.ProcessEngineFactoryBean">
               <property name="processEngineConfiguration" ref="processEngineConfiguration" />
          </bean>
    • Java类中注入方法如下
      @Autowired
      @Qualifier
      private ProcessEngine processEngine;
    • 报错信息如下图

  • 问题原因
    • 在配置文件中,注入的类是org.activiti.spring.ProcessEngineFactoryBean,而在Java中自动注入的实体Bean则是org.activiti.engine.ProcessEngine,两者类型不匹配
    • 注解@Autowired默认是按照Bean类型来匹配,而org.activiti.engine.ProcessEngine根本就没有配置注入,所以报错
  • 解决办法
    • 修改匹配模式为名称匹配,将注解@Qualifier修改为@Qualifier(value="processEngine")
    • 虽然两者类型不一样,但是Spring 会自动将org.activiti.spring.ProcessEngineFactoryBean强转成org.activiti.engine.ProcessEngine注入

 

posted @ 2018-05-04 15:11  话·醉月  阅读(1321)  评论(0编辑  收藏  举报