KieBuilderImpl.buildAll завершается с NullPointerException - PullRequest
0 голосов
/ 30 мая 2018

Я боролся со многими днями, чтобы решить ниже NullPointerException.Есть ли какие-либо конфигурации, которые мне не хватает?

Caused by: java.lang.NullPointerException
        at org.kie.internal.io.ResourceFactory.newByteArrayResource(ResourceFactory.java:66)
        at org.drools.compiler.kie.builder.impl.AbstractKieModule.getResource(AbstractKieModule.java:303)
        at org.drools.compiler.kie.builder.impl.AbstractKieModule.addResourceToCompiler(AbstractKieModule.java:268)
        at org.drools.compiler.kie.builder.impl.AbstractKieModule.addResourceToCompiler(AbstractKieModule.java:263)
        at org.drools.compiler.kie.builder.impl.AbstractKieProject.buildKnowledgePackages(AbstractKieProject.java:243)
        at org.drools.compiler.kie.builder.impl.AbstractKieProject.verify(AbstractKieProject.java:74)
        at org.drools.compiler.kie.builder.impl.KieBuilderImpl.buildKieProject(KieBuilderImpl.java:353)
        at org.drools.compiler.kie.builder.impl.KieBuilderImpl.buildAll(KieBuilderImpl.java:265)
        at org.drools.compiler.kie.builder.impl.KieBuilderImpl.buildAll(KieBuilderImpl.java:209)

Ниже приведены шаги, которые я выполняю, программа завершается с ошибкой на kieBuilder.buildAll() строке:

           KieServices kieServices = KieServices.Factory.get();
            KieResources kieResources = kieServices.getResources();
            KieFileSystem kfs = kieServices.newKieFileSystem();
            KieRepository kr = kieServices.getRepository();
 Resource res = kieResources.newByteArrayResource(drlFile.getBytes()).setResourceType(ResourceType.DRL).setSourcePath("test.drl");

kfs.write(res);

 KieBuilder kieBuilder = kieServices.newKieBuilder(kfs,this.getClass().getClassLoader());
            kieBuilder.buildAll();

Зависимость Maven:

   <dependency>
        <groupId>org.drools</groupId>
        <artifactId>drools-core</artifactId>
        <version>7.7.0.Final</version>
    </dependency>

    <dependency>
        <groupId>org.drools</groupId>
        <artifactId>drools-compiler</artifactId>
        <version>7.7.0.Final</version>
    </dependency>

Спасибо!Оцените вашу помощь.

Ответы [ 2 ]

0 голосов
/ 28 мая 2019

Мы обнаружили, что эта проблема возникает, когда kie.conf в серии 7.X Drools, когда вы создаете толстый jar, например: при использовании задачи shadowJar в gradle, файл kie.conf не сливается.

Способ решить эту проблему - обновить задачу shadowJar:

 apply plugin: 'com.github.johnrengelman.shadow'
shadowJar {
    zip64 true
    mergeServiceFiles {
        path = 'META-INF'
    }

}
0 голосов
/ 17 декабря 2018

Я получаю ту же ошибку, это было связано с тем, что некоторые службы KieServices не инициализировались.Службы считываются из файла свойств kie.conf, и указанная выше ошибка связана с тем, что служба ResourceFactory не инициализируется, добавьте "org.kie.api.io.KieResources = org.drools.core.io.impl.ResourceFactoryServiceImpl" в вашем kie.conf файле для инициализации этой службы.

...