2 votes

Problèmes de construction d'un projet Drools 4 dans Eclipse

J'ai des difficultés à compiler un projet drools 4. J'obtiens des erreurs dans le fichier de règles disant

Only a type can be imported. <<MyClassName>> resolves to a package 

Le compilateur incrémental ne fonctionne pas à cause de cela. Comment puis-je corriger les erreurs ou faire en sorte qu'Eclipse les ignore ?

2voto

VonC Points 414372

Cette question a été mentionnée pour une migration de drools 3.06 à 4.0.7 Quelle version d'Eclipse et de Drools utilisez-vous ?

Cela pourrait être lié à un problème de chemin de classe :

En utilisant le débogueur, je me suis rendu compte que les Drools PackageBuilder a essayé de charger les classes à partir du

Thread.currentThread().getContextClassLoader();

Ce site ClassLoader ne contient pas mes classes d'agents ! Même le chargeur de classes du système ne contient pas mes classes.

La solution était :

Au lieu de créer de simples PackageBuilder y RuleBase il faut les créer avec une PackageBuilderConfiguration et un RuleBaseConfiguration à la fois avec l'actuel classLoader configuré :

ClassLoader classLoader = this.getClass().getClassLoader();

PackageBuilderConfiguration configuration = new PackageBuilderConfiguration();
configuration.setClassLoader(classLoader);

PackageBuilder builder = new PackageBuilder(configuration);

builder.addPackageFromDrl(source);

RuleBaseConfiguration ruleBaseConfiguration = new RuleBaseConfiguration();
ruleBaseConfiguration.setClassLoader(classLoader);

ruleBase = RuleBaseFactory.newRuleBase(ruleBaseConfiguration);
ruleBase.addPackage(builder.getPackage());

1voto

Arindam Das Points 11

Assurez-vous que la classe MyClassName ou toute autre classe que vous utilisez à partir de la règle est dans un fichier jar et que le fichier jar est dans le classpath.

-1voto

Tarski Points 2671

Hmmm, j'ai nettoyé le projet et cela a résolu le problème.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X