当前位置: 首页 > 面试题库 >

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

何涵畅
2023-03-14
问题内容

我正在将JBoss AS 7.1.1.Final和KIE Workbench / Drools6.0.1。,Java和Eclipse(Kepler)一起使用。

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

a)通过URL: 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文件-准备好的罐子是我需要的负载,如与com.myprojects:myProject的:最新作标识。

我尝试一下(根据文档)

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)

我的问题是:为什么找不到来自回购的罐子?当我在KIE WB中创建jar时,KieModule是否自动在回购中表示jar和jar?还是我必须更改Maven Repo的默认ReleaseID,该ID随

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");
[...]

失败的原因是相同的。…有什么想法吗?


问题答案:

就我而言,事实证明

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

在我的POM中丢失



 类似资料:
  • 当你使用自定义库时,你可能会碰到问题,因为 Composer 不会递归加载您要求的需求库,所以你必须重新定义这些库中所有的 composer.json 文件。 在详细说明为什么是这样之前,你需要明白:自定义 VCS 和包存储库的主要用途是临时测试一些东西,或者 Fork 一个项目做了些改进,并且你的 Pull Request 还未被 Merge,等等。你不应该使用它们来跟踪你的私人资源包,关于这点

  • 我在本地和全局安装了Nodemon,但在这两种情况下都得到了相同的错误: Nodemon:无法加载文件C:\users\xxx\appdata\roaming\npm\Nodemon.ps1,因为在此系统上禁用了运行脚本。有关详细信息,请参阅https://go.microsoft.com/fwlink/?LinkId=135170上的about_Execution_Policies。 怎么修?

  • 我试图解决Dijkstra算法上的一个hackerrank问题--https://www.hackerrank.com/challenges/dijkstrashortreach。我在使用我自己的Dijkstra代码逻辑。虽然我的代码解决了更容易的测试用例,但它在更高的测试用例上失败了。我猜我的代码在某个地方缺少了一些传递性,并且我得到的某个节点的值高于预期。你能帮我找出我的错误吗?问题:输入格式

  • 谢谢你的帮助。Haskell看起来很有趣,但如果没有一个好教授的指导和指导,这是一门很难学的语言。我只是想自学这门语言。

  • 展示了如何调试问题,即PHP模块没有加载到PHP中。 我使用OpenSUSEV42。2个Linux操作系统,带有Apache Web服务器,PHP v7。1、Mysql。 因为它不提供PHPV7。1我需要,我构建了PHPV7。1来源。使用PHP-FPM。 我把它安装到 php.ini在: 我发现,opcache安装到 我编辑了php。ini并添加了以下行: 重新启动: 但我还是得到了以下结果: [

  • 我刚开始在 futurelearn.com 学习编程。 我有一个位图和一个球。任务是编码x方向的边界。 工作代码如下所示: 但我有一个逻辑问题。我想知道为什么我不能用“==”代替“ 这是了解的视频。它应该包含所有可能缺少的信息。 https://www.futurelearn.com/courses/begin-programming/7/steps/42942