2016-05-18 15 views
0

Gettind diesen Fehler beim Erstellen von Bean.Drools 6.4.0.final Problem in Maven Projekt Java 1.8

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 

Die besagt eindeutig, dass KnowledgeBuilderFactoryServiceImpl nicht gefunden wird. Aber ich verstehe nicht, warum nicht diese Klasse ihre interne drools Frage gefunden habe.

Anyways hier ist mein Code, wenn jemand helfen kann?

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; 
} 

Antwort

0

Stellen Sie sicher, drools-compiler Abhängigkeit in Ihrem Projekt haben:

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

geifert manchmal verwendet Reflektion seiner internen Klassen zu instanziieren. Diese könnten Ihre ClassNotFoundException erklären.

Hoffe es hilft,

+0

ja, ich habe diese Abhängigkeit in meinem Projekt. – Arpit

+0

können Sie alle Abhängigkeiten auflisten, die ich mit Versionen haben muss, die mit 6.4.0.final unterstützen – Arpit

+0

Könnten Sie bitte Ihre 'pom.xml' Datei mit uns teilen? –