简体   繁体   English

Maven Project Java 1.8中的Drools 6.4.0.final问题

[英]Drools 6.4.0.final Issue in Maven Project Java 1.8

Gettind this error while creating bean. 创建bean时获取此错误。

Caused by: java.lang.IllegalArgumentException: Unable to instantiate service for Class 'org.drools.builder.KnowledgeBuilderFactoryService'
at org.drools.util.ServiceRegistryImpl.get(ServiceRegistryImpl.java:162)
at org.drools.builder.KnowledgeBuilderFactory.loadServiceFactory(KnowledgeBuilderFactory.java:130)
at org.drools.builder.KnowledgeBuilderFactory.getKnowledgeBuilderServiceFactory(KnowledgeBuilderFactory.java:124)
at org.drools.builder.KnowledgeBuilderFactory.newKnowledgeBuilder(KnowledgeBuilderFactory.java:46)
at com.snapdeal.qualityscore.engine.cache.impl.DroolsRuleBaseCache.getDroolsRuleBase(DroolsRuleBaseCache.java:80)
at com.snapdeal.qualityscore.engine.cache.impl.DroolsRuleBaseCache.populateRuleBase(DroolsRuleBaseCache.java:52)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:349)
at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeInitMethods(InitDestroyAnnotationBeanPostProcessor.java:300)
at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:133)
... 27 more
Caused by: java.lang.IllegalArgumentException: Unable to instantiate 'org.drools.builder.impl.KnowledgeBuilderFactoryServiceImpl'
at org.drools.util.ServiceRegistryImpl$ReflectionInstantiator.newInstance(ServiceRegistryImpl.java:213)
at org.drools.util.ServiceRegistryImpl$ReflectionInstantiator.call(ServiceRegistryImpl.java:205)
at org.drools.util.ServiceRegistryImpl.get(ServiceRegistryImpl.java:160)
... 39 more
Caused by: java.lang.ClassNotFoundException: org.drools.builder.impl.KnowledgeBuilderFactoryServiceImpl
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1714)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:264)
at org.drools.util.ServiceRegistryImpl$ReflectionInstantiator.newInstance(ServiceRegistryImpl.java:210)
... 41 more

Which clearly says that KnowledgeBuilderFactoryServiceImpl is not found. 其中明确指出未找到KnowledgeBuilderFactoryServiceImpl。 But I don't understand why is not that class found its internal drools issue I guess.. 但是我不明白为什么我不知道那个班级没有发现内部流口水的问题。

Anyways here is my code if anybody can help? 无论如何,如果有人可以帮助,这是我的代码吗?

public static KnowledgeBase getDroolsRuleBase(List<InputStream> drlStreams) throws Exception{
    KnowledgeBuilder packageBuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
    KnowledgeBase ruleBase = KnowledgeBaseFactory.newKnowledgeBase();
    for (InputStream inputStream : drlStreams)
    {
        try{
            packageBuilder.add(ResourceFactory.newInputStreamResource(inputStream), ResourceType.DRL);
            ruleBase.addKnowledgePackages(packageBuilder.getKnowledgePackages());
        }
        catch(Exception e){
            throw new Exception("Rule Base Package Build Failed");
        }
    }
    return ruleBase;
}

Make sure you have drools-compiler dependency in your project: 确保您的项目中具有drools-compiler依赖项:

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

Drools sometimes uses reflection to instantiate its internal classes. Drools有时使用反射实例化其内部类。 These could explain your ClassNotFoundException . 这些可以解释您的ClassNotFoundException

Hope it helps, 希望能帮助到你,

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM