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

本文解决Activiti与Spring框架兼容性问题,包括调整Jackson版本避免ClassNotFoundException,修正流程部署路径解决资源未找到问题,及正确配置ProcessEngine Bean避免类型不匹配错误。
摘要由CSDN通过智能技术生成

项目环境

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一定不兼容
在这里插入图片描述

<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>

在这里插入图片描述

<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中配置如下










classpath:diagrams/test.bpmn







<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注入

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值