• 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注入
  • 相关阅读:
    ReactNative 适合初学的第一个教程demo,找租房
    ReactNative 从环境和第一个demo说起,填坑教程
    WKWebView与JS交互,UIWebView+JavascriptCore和JS交互
    JS中匿名函数$(function(){ })和(function(){})()的区别
    对前端的一个H5项目的所思所想
    使用Swift打造动态库SDK和DemoAPP时所遇到的(Xcode7.3)
    Git 分支合并代码
    Flutter中fluro使用
    flutter_redux框架的使用
    解决React-native init 初始化时 info Installing required CocoaPods dependencies
  • 原文地址:https://www.cnblogs.com/zuiyue_jing/p/8933432.html
Copyright © 2020-2023  润新知