You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

jBPM运行BPMN示例JUnit测试报KieAssemblers同优先级冲突错误

问题根因

报错核心触发点是KIE SPI服务加载时检测到同优先级的KieAssemblers实现重复注册,本质是依赖配置错误导致的类路径冲突:

  • 你手动在pom中单独声明了jbpm-runtime-manager、kie-internal、hibernate-core依赖,而jbpm-test已经通过传递依赖引入了整套版本匹配的jBPM/KIE核心包,手动重复声明导致同一套SPI配置文件被类路径多次扫描加载,触发注册冲突。
  • 升级jBPM版本到7.71.0.Final时,没有用官方BOM统一管理关联依赖版本,手动指定的hibernate版本和jBPM 7.71.0依赖的版本不匹配,进一步加剧了依赖树混乱。清理Maven本地缓存只能解决jar包损坏的问题,解决不了类路径重复加载的问题,所以操作无效。
修复步骤
  1. 替换现有pom.xml内容,通过jBPM官方BOM统一管理所有关联依赖版本,删除所有手动声明的冗余jBPM/KIE/hibernate依赖,修改后的pom如下:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>msc</groupId>
  <artifactId>test</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  
  <build>
    <plugins>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.5.1</version>
        <configuration>
          <source>1.8</source>
          <target>1.8</target>
        </configuration>
      </plugin>
    </plugins>
  </build>

  <!-- 统一锁定所有jBPM/KIE关联依赖版本,彻底避免版本不一致、重复引入问题 -->
  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>org.jbpm</groupId>
        <artifactId>jbpm-bom</artifactId>
        <version>7.71.0.Final</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
    </dependencies>
  </dependencyManagement>
   
  <dependencies>
    <dependency>
      <groupId>org.jbpm</groupId>
      <artifactId>jbpm-test</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.13.2</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>
  1. 在Eclipse中右键项目,选择Maven -> Update Project,勾选Force Update of Snapshots/Releases选项,强制刷新项目依赖,清除旧的冗余依赖引用。
  2. 不要手动指定hibernate或其他jBPM关联组件的版本,BOM已经默认导入了和7.71.0.Final完全兼容的版本,手动改版本大概率会触发新的类冲突。
  3. 如果刷新后Eclipse运行仍报错,先在项目根目录执行mvn clean test命令行构建,确认命令行层面测试可以正常通过,再通过Eclipse JUnit插件运行测试类,排除Eclipse自身缓存的影响。
验证结果

依赖刷新完成后重新运行ProcessTest.java,SPI重复注册的报错会直接消失,Hello World流程正常启动执行,测试用例可以顺利通过,控制台会输出流程节点Hello的触发日志。

内容的提问来源于stack exchange,提问作者Lucie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 13:57:11