Android中的Drools(JavafxPorts)
我创建了一个简单的JavaFX应用程序,部署在Android上。我试图在应用程序中执行Drools,但出现了预期错误:Android中的Drools(JavafxPorts),java,android,javafx-8,javafxports,Java,Android,Javafx 8,Javafxports,我创建了一个简单的JavaFX应用程序,部署在Android上。我试图在应用程序中执行Drools,但出现了预期错误: java.lang.NullPointerException:parentLoader==null&&!允许为空 谁能告诉我怎么解决这个问题 代码如下: package com.rameses.waterworks.drools; import java.util.Properties; import org.drools.KnowledgeBase; import org.
java.lang.NullPointerException:parentLoader==null&&!允许为空
谁能告诉我怎么解决这个问题
代码如下:
package com.rameses.waterworks.drools;
import java.util.Properties;
import org.drools.KnowledgeBase;
import org.drools.KnowledgeBaseFactory;
import org.drools.builder.KnowledgeBuilder;
import org.drools.builder.KnowledgeBuilderConfiguration;
import org.drools.builder.KnowledgeBuilderError;
import org.drools.builder.KnowledgeBuilderErrors;
import org.drools.builder.KnowledgeBuilderFactory;
import org.drools.builder.ResourceType;
import org.drools.io.ResourceFactory;
import org.drools.runtime.StatefulKnowledgeSession;
public class TestReports {
public static void main(String[] args) throws Exception {
Properties properties = new Properties();
properties.setProperty( "drools.dialect.java.compiler", "JANINO" );
KnowledgeBuilderConfiguration conf = KnowledgeBuilderFactory.newKnowledgeBuilderConfiguration(properties,TestReports.class.getClassLoader());
KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(conf);
kbuilder.add(ResourceFactory.newClassPathResource("test/reports/test.drl"), ResourceType.DRL);
KnowledgeBuilderErrors errors = kbuilder.getErrors();
if (errors.size() > 0) {
for (KnowledgeBuilderError error: errors) {
System.err.println(error);
}
throw new IllegalArgumentException("Could not parse knowledge.");
}
KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
kbase.addKnowledgePackages(kbuilder.getKnowledgePackages());
StatefulKnowledgeSession ksession = null;
try {
ksession = kbase.newStatefulKnowledgeSession();
ksession.insert(new SampleBean("Hello Drools!"));
ksession.fireAllRules();
}
catch(Exception e){
}
finally {
ksession.dispose();
}
}
}
我使用以下代码执行它:
TestReports.main(null);
这可能看起来很奇怪,但这个问题可能取决于您使用的Drools库的版本。例如,我使用了(以下教程)中的JAR。本教程是为桌面Drools应用程序编写的,当我试图将一些JAR移到我的Android项目中时,我得到了
java.lang.NullPointerException:parentLoader==null&&!允许为空
。所以我找到了(你可以在这里找到:)并从那里拿走了罐子。这使得错误不再出现。确切地说,这个例子并不完美,因为它不能像我希望的那样工作,但它可能会对您有所帮助。引发异常的行号是多少?您如何运行应用程序?您是否使用常规的build.gradle
文件?您的类应该是JavaFX应用程序的一部分,您可以随时调用它,但不能使用main
方法…您知道如何解决这个问题吗?