gpt4 book ai didi

java - 为什么将 Drools 6 KIE JAR 加载到代码中会失败?

转载 作者:搜寻专家 更新时间:2023-10-31 19:55:29 26 4
gpt4 key购买 nike

我将 JBoss AS 7.1.1.Final 与 KIE Workbench/Drools 6.0.1.、Java 和 Eclipse (Kepler) 一起使用。

我需要 KIE Workbench(以前称为 Drools Guvnor)让人们使用 Facts 和 Rules 以图形方式创建/编辑 jar,然后将其作为 jar 存储在本地 maven 存储库中。然后我想以编程方式访问这些 jar (以前称为 pkg)并将它们加载到我的 Drools 应用程序中。该应用程序甚至可以(尽管不是首选)在同一工作站上运行,因此可以访问存储库

a) 通过网址: http://localhost:8080/drools-wb-as7.0/maven2/com/myprojects/myProject/LATEST/myProject-LATEST.jar

b) 按文件路径/类路径:/my/folder/jboss-as-7.1.1.Final/bin/repositories/kie/com/myprojects/myProject/LATEST/myProject-LATEST.jar

想在我的代码中创建/编译规则等,既不动态地动态加载单个.drl文件——准备好的jar是我需要加载的, 和例如com.myprojects:myProject:LATEST 作为标识符。

我试试这个(根据文档)

KieServices ks = KieServices.Factory.get();
KieContainer kContainer = ks.newKieContainer(
ks.newReleaseId("com.myprojects", "myProject", "LATEST"));
KieScanner kScanner = ks.newKieScanner( kContainer );
kScanner.start( 10000L );

KieSession kSession = kContainer.newKieSession("defaultKieSession");
kSession.insert( fact );

[...]

但是,这会因运行时异常而失败,

Exception in thread "main" java.lang.RuntimeException: Cannot find KieModule: com.myprojects:myProject:LATEST
at org.drools.compiler.kie.builder.impl.KieServicesImpl.newKieContainer(KieServicesImpl.java:86)
at com.myprojects.myproject.KieDroolsWBOnlinePuller.code(KieDroolsWBOnlinePuller.java:118)
at com.myprojects.myproject.KieDroolsWBOnlinePuller.main(KieDroolsWBOnlinePuller.java:40)

我的问题是:为什么找不到来自 repo 的 jar?当我在 KIE WB 中创建它时,KieModule 不是在 repo 中自动表示 jar 和 jar 吗?或者我必须更改 Maven Repo 的默认 ReleaseID,它用

打印出来
KieRepository repo = ks.getRepository();
repo.getDefaultReleaseId()

决心

org.default:artifact:1.0.0-SNAPSHOT ?

是 Maven 问题吗?我哪里错了?

这里是 jars pom.xml 的内容

<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>com.myprojects</groupId>
<artifactId>myProject</artifactId>
<version>LATEST</version>
<name>myProject</name>
<repositories>
<repository>
<id>guvnor-m2-repo</id>
<name>Guvnor M2 Repo</name>
<url>http://localhost:8080/drools-wb-as7.0/maven2/</url>
</repository>
</repositories>
</project>

我还尝试过使用这段代码通过 URL 加载 jar:

KieServices ks = KieServices.Factory.get();
ReleaseId releaseId = ks.newReleaseId("com.myprojects", "myProject", "LATEST");
KieResources kres = ks.getResources();

String url = "http://127.0.0.1:8080/drools-wb-as7.0/maven2/com/myprojects/myProject/LATEST/myProject-LATEST.jar";
kres.newUrlResource( url );
KieContainer kContainer = ks.newKieContainer(releaseId);
KieSession kSession = kContainer.newKieSession("statelessDefautlKnowledgeSession");
[...]

这失败了同样的异常....有什么想法吗?

我目前阅读的一些资源(无法发布其他 6 个):

add drls etc. dynamically

load drls dynamically

最佳答案

在我的例子中,事实证明

<dependency>
<groupId>org.kie</groupId>
<artifactId>kie-ci</artifactId>
</dependency>

在我的 POM 中丢失了

关于java - 为什么将 Drools 6 KIE JAR 加载到代码中会失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20995133/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com