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

Gradle集成Drools打包Jar运行报错求助

问题

Gradle项目集成Drools组件后本地运行正常,但打包成Jar包运行时出现错误。使用的依赖版本如下:

compile group: 'org.kie', name: 'kie-spring', version: '7.17.0.Final'
compile group: 'org.drools', name: 'drools-core', version: '7.17.0.Final'
compile group: 'org.kie', name: 'kie-ci', version: '7.17.0.Final'

核心错误日志:

[Byte Buddy] ERROR org.apache.maven.lifecycle.mapping.DefaultLifecycleMapping$__sisu4 [ClassRealm[maven, parent: ClassRealm[maven-parent, parent: null]], null, loaded=false]
java.lang.IllegalStateException: Cannot resolve type description for org.apache.maven.lifecycle.mapping.DefaultLifecycleMapping
    ...
    at org.drools.compiler.kie.builder.impl.KieBuilderImpl.buildPomModel(KieBuilderImpl.java:509)
    at org.kie.internal.utils.KieHelper.getKieContainer(KieHelper.java:84)
    at com.ddmc.tag.drools.DroolsUtils.getKnowledgeBaseImplBySql(DroolsUtils.java:537)

解决方案

1. 移除冗余的kie-ci依赖

kie-ci主要用于Maven环境下通过POM构建Kie容器,纯Gradle/Spring Boot项目通常不需要该依赖。调整依赖为:

implementation group: 'org.kie', name: 'kie-spring', version: '7.17.0.Final'
implementation group: 'org.drools', name: 'drools-core', version: '7.17.0.Final'
implementation group: 'org.drools', name: 'drools-compiler', version: '7.17.0.Final'
implementation group: 'org.kie', name: 'kie-api', version: '7.17.0.Final'

2. 修改规则加载逻辑,避免Maven POM解析

如果必须保留kie-ci,需调整KieHelper的使用方式,直接加载规则文件而非依赖POM模型:

KieHelper kieHelper = new KieHelper();
// 直接添加DRL规则内容
kieHelper.addContent("package com.ddmc.rules;\nrule \"SampleRule\" when then end", ResourceType.DRL);
// 或从类路径加载规则文件
kieHelper.addResource(ResourceFactory.newClassPathResource("rules/sample.drl"), ResourceType.DRL);
KieContainer kieContainer = kieHelper.build();

3. 排除kie-ci中的Maven依赖冲突

若无法移除kie-ci,排除其中的Maven相关组件以避免类加载冲突:

implementation group: 'org.kie', name: 'kie-ci', version: '7.17.0.Final' {
    exclude group: 'org.apache.maven'
    exclude group: 'org.codehaus.plexus'
}

4. 修正Spring Boot打包配置

确保Gradle的Spring Boot打包插件正确打包所有依赖:

plugins {
    id 'org.springframework.boot' version '2.3.12.RELEASE'
    id 'io.spring.dependency-management' version '1.0.11.RELEASE'
    id 'java'
}

springBoot {
    mainClassName = 'com.ddmc.TagServiceApplication'
}

bootJar {
    archiveFileName = 'tag-service.jar'
}

5. 统一Byte Buddy版本

解决Byte Buddy版本冲突问题,在依赖管理中指定统一版本:

dependencyManagement {
    dependencies {
        dependency 'net.bytebuddy:byte-buddy:1.10.22'
        dependency 'net.bytebuddy:byte-buddy-agent:1.10.22'
    }
}

内容的提问来源于stack exchange,提问作者沈月望

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 16:55:46