Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JBoss-如何以编程方式加载jar?该会话为空_Java_Jboss_Kie - Fatal编程技术网

Java JBoss-如何以编程方式加载jar?该会话为空

Java JBoss-如何以编程方式加载jar?该会话为空,java,jboss,kie,Java,Jboss,Kie,我有一个jar文件,它可以从Windows命令行通过“java-jarmytest.jar”从不同的路径位置动态加载两个jar。其中一个JAR包含my.drl文件和kmodule.xml。从日志可以看出,jar从命令行成功运行 [main] INFO org.drools.compiler.kie.builder.impl.ClasspathKieProject - Found kmodule: jar:file:/C:/BPMPOC/rules/target/rules-0.0.1.jar!/

我有一个jar文件,它可以从Windows命令行通过“java-jarmytest.jar”从不同的路径位置动态加载两个jar。其中一个JAR包含my.drl文件和kmodule.xml。从日志可以看出,jar从命令行成功运行

[main] INFO org.drools.compiler.kie.builder.impl.ClasspathKieProject - Found kmodule: jar:file:/C:/BPMPOC/rules/target/rules-0.0.1.jar!/META-INF/kmodule.xml
[main] INFO org.drools.compiler.kie.builder.impl.KieRepositoryImpl - KieModule was added: ZipKieModule[releaseId=org.krtest:rules:0.0.1,file=C:\BPMPOC\rules\target\rules-0.0.1-SNAPSHOT.jar]
I am in Rule1!
I am in Rule2!
但是,在将同一个jar复制到我的JBoss deployments文件夹并执行standalone.bat之后,我的会话为NULL。我使用以下代码行创建会话:

KieSession ksession = kc.newKieSession("HelloWorldKS");
我尝试了多种动态加载jar文件的方法。每一个都可以从命令行成功运行,但部署到JBoss时就不行了

应要求添加以下内容:

kmodule.xml

<?xml version="1.0" encoding="UTF-8"?>
<kmodule xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.drools.org/xsd/kmodule">
  <kbase name="HelloWorldKB" packages="org.krtest.rules.helloworld">
    <ksession name="HelloWorldKS"/>
  </kbase>
</kmodule>

HelloWorldKS
是您放在kmodule.xml文件的
标记中的名称吗?或者您在kmodule.xml文件的
标记中放置的名称?根据您的代码,
HelloWorldKS
应该是会话的名称,而不是知识库的名称。我假设您的
kc
变量包含正确初始化的
KieContainer
,您能提供初始化代码和kmodule.xml文件吗?完成,请参见上文。您的
kmodule.xml
似乎很好。但是,您的初始化代码无法编译。您正在将类型为
ClassLoader
的对象分配给
KieContainer
变量。你的代码复制粘贴正确吗?我没有正确复制粘贴。当我开始工作时,我会改正的。修改后的帖子。谢谢
KieServices ks = KieServices.Factory.get();
KieContainer kc = ks.getKieClasspathContainer(DroolsTest.class.getClassLoader());
KieSession ksession = kc.newKieSession("HelloWorldKS");