Ich habe gerade mit Drools angefangen, und nun bin ich auf ein Problem gestoßen. Ich kann problemlos das Program ausführen, aber es kommen noch Warnungen.
Daher dachte ich, es sei möglich, alle Warnungen mit @SuppressWarnings({"all"}) in der JAVA-Klasse abzuklemmen, was aber nicht funktioniert hat.
Meine Klasse ist diese:
Es kommen aber trotzdem noch einige Warnungen (nämlich diejenigen weiter unten). Daher wollte ich mal fragen, vielleicht kennt sich jeman sehr gut mit Drools aus, und kann mir einen Tipp geben, wo man diese Warnungen abstellen kann, da ich durch gugel dazu nix gefunden habe.
Daher dachte ich, es sei möglich, alle Warnungen mit @SuppressWarnings({"all"}) in der JAVA-Klasse abzuklemmen, was aber nicht funktioniert hat.
Meine Klasse ist diese:
Java:
package com.sample;
import org.drools.KnowledgeBase;
import org.drools.KnowledgeBaseFactory;
import org.drools.builder.KnowledgeBuilder;
import org.drools.builder.KnowledgeBuilderError;
import org.drools.builder.KnowledgeBuilderErrors;
import org.drools.builder.KnowledgeBuilderFactory;
import org.drools.builder.ResourceType;
import org.drools.io.ResourceFactory;
import org.drools.logger.KnowledgeRuntimeLogger;
import org.drools.logger.KnowledgeRuntimeLoggerFactory;
import org.drools.runtime.StatefulKnowledgeSession;
/**
* This is a sample class to launch a rule.
*/
public class DroolsTest {
@SuppressWarnings({"all"})
public static final void main(String[] args) {
try {
// load up the knowledge base
KnowledgeBase kbase = readKnowledgeBase();
StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
KnowledgeRuntimeLogger logger = KnowledgeRuntimeLoggerFactory.newFileLogger(ksession, "test");
// go !
Message message = new Message();
message.setMessage("Hello World");
message.setStatus(Message.HELLO);
ksession.insert(message);
ksession.fireAllRules();
logger.close();
} catch (Throwable t) {
t.printStackTrace();
}
}
private static KnowledgeBase readKnowledgeBase() throws Exception {
KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
kbuilder.add(ResourceFactory.newClassPathResource("Sample.drl"), ResourceType.DRL);
KnowledgeBuilderErrors errors = kbuilder.getErrors();
if (errors.size() > 0) {
for (KnowledgeBuilderError error: errors) {
System.err.println(error);
}
throw new IllegalArgumentException("Could not parse knowledge.");
}
KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
kbase.addKnowledgePackages(kbuilder.getKnowledgePackages());
return kbase;
}
public static class Message {
public static final int HELLO = 0;
public static final int GOODBYE = 1;
private String message;
private int status;
public String getMessage() {
return this.message;
}
public void setMessage(String message) {
this.message = message;
}
public int getStatus() {
return this.status;
}
public void setStatus(int status) {
this.status = status;
}
}
}
Es kommen aber trotzdem noch einige Warnungen (nämlich diejenigen weiter unten). Daher wollte ich mal fragen, vielleicht kennt sich jeman sehr gut mit Drools aus, und kann mir einen Tipp geben, wo man diese Warnungen abstellen kann, da ich durch gugel dazu nix gefunden habe.
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by com.thoughtworks.xstream.converters.collections.TreeMapConverter (file:/C:/Users/Andi/Documents/IT/droolsjbpm-tools-distribution-5.3.0.Final/xstream.jar) to field java.util.TreeMap.comparator
WARNING: Please consider reporting this to the maintainers of com.thoughtworks.xstream.converters.collections.TreeMapConverter
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release