我是Drools的新手,我在eclipse IDE中使用drools 5.5.0最终运行时Maven项目。
当我在Maven中运行项目时,会抛出以下错误 cvc-elt.1:找不到元素的声明' change-set'。
这是控制流程
SampleDroolRule.java
public class SampleDroolRule extends RuleTestBase {
private static List<Object> mockPropertySet;
public SampleDO runRules(List<Object> mockPropertySet) {
StatelessKnowledgeSession ks = createRuleEngine("SampleTest.xml", logger);
&#39; createRuleEngine&#39;打电话到
protected static StatelessKnowledgeSession createRuleEngine(String changeSetXML, Logger logger) {
logger.info("Creating KS from " + changeSetXML);
KnowledgeBuilder builder = KnowledgeBuilderFactory.newKnowledgeBuilder();
builder.add(ResourceFactory.newClassPathResource(changeSetXML), ResourceType.CHANGE_SET);
builder.add行抛出错误
[main] ERROR org.drools.xml.ExtensibleXmlParser - (null: 4, 188): cvc-elt.1: Cannot find the declaration of element 'change-set'.
SampleTest.xml看起来像这样
<?xml version="1.0" encoding="UTF-8"?>
<change-set xmlns='http://drools.org/drools-5.0/change-set'
xmlns:xs='http://www.w3.org/2001/XMLSchema-instance'
xs:schemaLocation='http://drools.org/drools-5.0/change-set.xsd http://anonsvn.jboss.org/repos/labs/labs/jbossrules/trunk/drools- api/src/main/resources/change-set-1.0.0.xsd' >
<add>
<resource source='classpath:rules/sample/drls/SampleRules.drl' type='DRL' />
</add>
</change-set>
我现在花了2天多的时间。经历了大量的论坛,没有运气。 请帮帮我。 谢谢!
答案 0 :(得分:0)
从xs:schemaLocation的URL中删除空格(drools- api
)可能会有所帮助。
但是,我建议您修改<change-set>
中的SampleTest.xml
元素属性,以便xs:schemaLocation
引用change-set.xsd
或change-set-1.0.0.xsd
的本地副本。
<change-set xmlns='http://drools.orchange-set-1.0.0.xsdg/drools-5.0/change-set'
xmlns:xs='http://www.w3.org/2001/XMLSchema-instance'
xs:schemaLocation='file:///...'>
您可以在分发档案的sources目录中找到XML Schema文件。
答案 1 :(得分:0)
我也面临同样的错误。最后,通过更改xml和主类代码内容来解决此问题,如下所示
并在您的主要课程中添加以下代码段
<change-set xmlns='http://drools.org/drools-5.0/change-set'
xmlns:xs='http://www.w3.org/2001/XMLSchema-instance'
xs:schemaLocation='http://drools.org/drools-5.0/change-set http://anonsvn.jboss.org/repos/labs/labs/jbossrules/trunk/drools-api/src/main/resources/change-set-1.0.0.xsd' >
<add>
<resource source='file:file-path/file-name.drl' type='DRL' />
<resource source='file:file-path/file-name.bpmn' type='BPMN2' />
</add>
</change-set>
kbuilder.add(ResourceFactory.newInputStreamResource(new FileInputStream(“yourfileName.xml”)), ResourceType.CHANGE_SET);
然后将yourfileName.xml放在项目根目录
中希望它有所帮助。