为什么将Drools 6 KIE JAR加载到代码中失败?
我正在将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中丢失
以上是 为什么将Drools 6 KIE JAR加载到代码中失败? 的全部内容, 来源链接: utcz.com/qa/403729.html