2017-06-28 3 views
0

J'ai créé un projet de drools utilisant la version 6.5.0.Final et fonctionne correctement. Mais quand je créé un projet Maven son erreur de lancerDrools lance une exception dans le projet Maven

Caused by: java.lang.NoSuchMethodError: com.thoughtworks.xstream.XStream.fromXML(Ljava/net/URL;)Ljava/lang/Object; 
at org.drools.compiler.kproject.models.KieModuleModelImpl$kModuleMarshaller.fromXML(KieModuleModelImpl.java:207) 
at org.drools.compiler.kproject.models.KieModuleModelImpl.fromXML(KieModuleModelImpl.java:154) 
at org.drools.compiler.kie.builder.impl.ClasspathKieProject.fetchKModule(ClasspathKieProject.java:179) 
at org.drools.compiler.kie.builder.impl.ClasspathKieProject.fetchKModule(ClasspathKieProject.java:141) 
at org.drools.compiler.kie.builder.impl.ClasspathKieProject.discoverKieModules(ClasspathKieProject.java:112) 
at org.drools.compiler.kie.builder.impl.ClasspathKieProject.init(ClasspathKieProject.java:84) 
at org.drools.compiler.kie.builder.impl.KieContainerImpl.<init>(KieContainerImpl.java:139) 
at org.drools.compiler.kie.builder.impl.KieServicesImpl.newKieClasspathContainer(KieServicesImpl.java:135) 
at org.drools.compiler.kie.builder.impl.KieServicesImpl.getKieClasspathContainer(KieServicesImpl.java:101) 
at org.drools.compiler.kie.builder.impl.KieServicesImpl.getKieClasspathContainer(KieServicesImpl.java:79) 
at com.powerschool.cc.validationengine.engine.ValidationEngine.getKieSession(ValidationEngine.java:49) 
at com.powerschool.cc.validationengine.engine.ValidationEngine.validationEngine(ValidationEngine.java:24) 

Voici mon dépendances dans le fichier POM

<dependencies> 

    <dependency> 
     <groupId>org.json</groupId> 
     <artifactId>json</artifactId> 
     <version>20140107</version> 
    </dependency> 
    <dependency> 
     <groupId>org.kie</groupId> 
     <artifactId>kie-api</artifactId> 
     <version>${runtime.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.drools</groupId> 
     <artifactId>drools-core</artifactId> 
     <version>${runtime.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.drools</groupId> 
     <artifactId>drools-compiler</artifactId> 
     <version>${runtime.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>javax.enterprise</groupId> 
     <artifactId>cdi-api</artifactId> 
     <version>${cdi.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.jboss.weld.se</groupId> 
     <artifactId>weld-se-core</artifactId> 
     <version>${weld.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>${junit.version}</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>com.thoughtworks.xstream</groupId> 
     <artifactId>xstream</artifactId> 
     <version>1.4.10-java7</version> </dependency> 
</dependencies> 

Ce code

private KieSession getKieSession(){ 
    KieServices services = null; 
    KieContainer container = null; 
    KieSession kieSession = null; 
    try{ 

     services = KieServices.Factory.get(); 
     container = services.getKieClasspathContainer(); 
     kieSession = container.newKieSession("ksession-rules"); 
    }catch(Exception e){ 
     e.printStackTrace(); 
    } 
    return kieSession; 
} 

getKieClasspathContainer jette l'erreur.

Vous avez recherché l'erreur et trouvé que l'ajout de la dépendance Xstream résoudra le problème, mais ce n'est pas le cas. Uing Java 7 et tomcat 7. Ai-je besoin d'ajouter une autre dépendance au POM? Quelqu'un a une idée?

Répondre

0

La version dans la dépendance de votre POM pour xstream est 1.4.10-java7.

Drools 6.5.0-Final est livré avec le fichier jar xstream-1.4.9.jar et cela signifie que les pots Drools ont été compilés avec cette version.

Je ne peux pas garantir que c'est la raison pour laquelle vous obtenez cette erreur, mais cela vaut le coup d'essayer.

+0

effectivement j'ai essayé avec 1.4.9 aussi mais il donne la même erreur et l'exception lance de 'services.getKieClasspathContainer();' cette ligne –

+0

Quand je suis en train de l'exécuter en utilisant Main(), son fonctionnement, mais quand je essayer de l'exécuter dans Tomcat je suis confronté à un problème. –