Drools I';我流口水有毛病

Drools I';我流口水有毛病,drools,rule-engine,Drools,Rule Engine,我正在处理eclipse上的Drools,代码工作正常,突然出现了这些错误。我试着重新安装drools插件,卸载Eclipse,更新JRE和JDK,但没有任何效果 DRL文件 import com.binod.DroolsDemo.AssessmentLevel rule "Level A1" when studentObject: AssessmentLevel(assessment=="Null") then studentObject.s

我正在处理eclipse上的Drools,代码工作正常,突然出现了这些错误。我试着重新安装drools插件,卸载Eclipse,更新JRE和JDK,但没有任何效果

DRL文件

import com.binod.DroolsDemo.AssessmentLevel

rule "Level A1"
    when 
        studentObject: AssessmentLevel(assessment=="Null")
    then
        studentObject.setLevel("A1");
        System.out.println("Student Level is A1");
    end
rule "Level A2"
    when 
        studentObject: AssessmentLevel(assessment=="[1-10]")
    then
        studentObject.setLevel("A2");
        System.out.println("Student Level is A2");
    end
rule "Level B1"
    when 
        studentObject: AssessmentLevel(assessment=="[1-10] AND [11-15]")
    then
        studentObject.setLevel("B1");
        System.out.println("Student Level is B1");
    end
assemsettlevel.java

package com.binod.DroolsDemo;

public class AssessmentLevel {

    private String assessment;
    private String level;
    private String personalizedexercises;

    public String getAssessment() {
        return assessment;
    }
    public void setAssessment(String assessment) {
        this.assessment = assessment;
    }
    public String getLevel() {
        return level;
    }
    public void setLevel(String level) {
        this.level = level;
    }
    public String getPersonalizedexercises() {
        return personalizedexercises;
    }
    public void setPersonalizedexercises(String personalizedexercises) {
        this.personalizedexercises = personalizedexercises;
    }

}
package com.binod.DroolsDemo;

import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;

import org.drools.compiler.compiler.DroolsParserException;
import org.drools.compiler.compiler.PackageBuilder;
import org.drools.core.RuleBase;
import org.drools.core.RuleBaseFactory;
import org.drools.core.WorkingMemory;



public class DemoTest {

    public static void main(String[] args) throws DroolsParserException, IOException {
        DemoTest client = new DemoTest();
        client.execteRule();
    }

    public void execteRule() throws DroolsParserException, IOException{
           PackageBuilder builder = new PackageBuilder();
           String ruleFile = "/rules.drl";
           InputStream resourceAsStream = getClass().getResourceAsStream(ruleFile);

           Reader ruleReader = new InputStreamReader(resourceAsStream);
           builder.addPackageFromDrl(ruleReader);
           org.drools.core.rule.Package rulePackage = builder.getPackage();
           RuleBase ruleBase = RuleBaseFactory.newRuleBase();
           ruleBase.addPackage(rulePackage);

           WorkingMemory workingMemory = ruleBase.newStatefulSession();

           AssessmentLevel assessemntLevel = new AssessmentLevel();
           assessemntLevel.setAssessment("[1-10] AND [11-15] AND [16-20] AND [21-25] AND [26-30] AND [31-35]");
           workingMemory.insert(assessemntLevel);
           workingMemory.fireAllRules();

           System.out.println("\n Assessment Score is "+assessemntLevel.getAssessment());
           /*+" \n Student is in Level  "
           +assessemntLevel.getLevel()+" \n And the excercises include "
           +assessemntLevel.getPersonalizedexercises()*/


       } 
}
Test.java

package com.binod.DroolsDemo;

public class AssessmentLevel {

    private String assessment;
    private String level;
    private String personalizedexercises;

    public String getAssessment() {
        return assessment;
    }
    public void setAssessment(String assessment) {
        this.assessment = assessment;
    }
    public String getLevel() {
        return level;
    }
    public void setLevel(String level) {
        this.level = level;
    }
    public String getPersonalizedexercises() {
        return personalizedexercises;
    }
    public void setPersonalizedexercises(String personalizedexercises) {
        this.personalizedexercises = personalizedexercises;
    }

}
package com.binod.DroolsDemo;

import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;

import org.drools.compiler.compiler.DroolsParserException;
import org.drools.compiler.compiler.PackageBuilder;
import org.drools.core.RuleBase;
import org.drools.core.RuleBaseFactory;
import org.drools.core.WorkingMemory;



public class DemoTest {

    public static void main(String[] args) throws DroolsParserException, IOException {
        DemoTest client = new DemoTest();
        client.execteRule();
    }

    public void execteRule() throws DroolsParserException, IOException{
           PackageBuilder builder = new PackageBuilder();
           String ruleFile = "/rules.drl";
           InputStream resourceAsStream = getClass().getResourceAsStream(ruleFile);

           Reader ruleReader = new InputStreamReader(resourceAsStream);
           builder.addPackageFromDrl(ruleReader);
           org.drools.core.rule.Package rulePackage = builder.getPackage();
           RuleBase ruleBase = RuleBaseFactory.newRuleBase();
           ruleBase.addPackage(rulePackage);

           WorkingMemory workingMemory = ruleBase.newStatefulSession();

           AssessmentLevel assessemntLevel = new AssessmentLevel();
           assessemntLevel.setAssessment("[1-10] AND [11-15] AND [16-20] AND [21-25] AND [26-30] AND [31-35]");
           workingMemory.insert(assessemntLevel);
           workingMemory.fireAllRules();

           System.out.println("\n Assessment Score is "+assessemntLevel.getAssessment());
           /*+" \n Student is in Level  "
           +assessemntLevel.getLevel()+" \n And the excercises include "
           +assessemntLevel.getPersonalizedexercises()*/


       } 
}
错误报告

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.drools.core.rule.builder.dialect.asm.ClassGenerator (file:/C:/Users/bojaj/.m2/repository/org/drools/drools-core/6.0.1.Final/drools-core-6.0.1.Final.jar) to method java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int)
WARNING: Please consider reporting this to the maintainers of org.drools.core.rule.builder.dialect.asm.ClassGenerator
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
Exception in thread "main" java.lang.RuntimeException: wrong class format
    at org.drools.compiler.commons.jci.compilers.EclipseJavaCompiler$2.findType(EclipseJavaCompiler.java:279)
    at org.drools.compiler.commons.jci.compilers.EclipseJavaCompiler$2.findType(EclipseJavaCompiler.java:219)
    at org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.askForType(LookupEnvironment.java:113)
    at org.eclipse.jdt.internal.compiler.lookup.UnresolvedReferenceBinding.resolve(UnresolvedReferenceBinding.java:49)
    at org.eclipse.jdt.internal.compiler.lookup.BinaryTypeBinding.resolveType(BinaryTypeBinding.java:122)
    at org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.getType(LookupEnvironment.java:1160)
    at org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.getResolvedType(LookupEnvironment.java:1091)
    at org.eclipse.jdt.internal.compiler.lookup.Scope.getJavaLangString(Scope.java:2288)
    at org.eclipse.jdt.internal.compiler.ast.StringLiteral.literalType(StringLiteral.java:72)
    at org.eclipse.jdt.internal.compiler.ast.Literal.resolveType(Literal.java:45)
    at org.eclipse.jdt.internal.compiler.ast.MessageSend.resolveType(MessageSend.java:374)
    at org.eclipse.jdt.internal.compiler.ast.Expression.resolve(Expression.java:947)
    at org.eclipse.jdt.internal.compiler.ast.AbstractMethodDeclaration.resolveStatements(AbstractMethodDeclaration.java:456)
    at org.eclipse.jdt.internal.compiler.ast.MethodDeclaration.resolveStatements(MethodDeclaration.java:252)
    at org.eclipse.jdt.internal.compiler.ast.AbstractMethodDeclaration.resolve(AbstractMethodDeclaration.java:415)
    at org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.resolve(TypeDeclaration.java:1148)
    at org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.resolve(TypeDeclaration.java:1258)
    at org.eclipse.jdt.internal.compiler.ast.CompilationUnitDeclaration.resolve(CompilationUnitDeclaration.java:539)
    at org.eclipse.jdt.internal.compiler.Compiler.process(Compiler.java:763)
    at org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:468)
    at org.drools.compiler.commons.jci.compilers.EclipseJavaCompiler.compile(EclipseJavaCompiler.java:405)
    at org.drools.compiler.commons.jci.compilers.AbstractJavaCompiler.compile(AbstractJavaCompiler.java:49)
    at org.drools.compiler.rule.builder.dialect.java.JavaDialect.compileAll(JavaDialect.java:405)
    at org.drools.compiler.compiler.DialectCompiletimeRegistry.compileAll(DialectCompiletimeRegistry.java:46)
    at org.drools.compiler.compiler.PackageRegistry.compileAll(PackageRegistry.java:110)
    at org.drools.compiler.compiler.PackageBuilder.compileAll(PackageBuilder.java:1334)
    at org.drools.compiler.compiler.PackageBuilder.compileAllRules(PackageBuilder.java:975)
    at org.drools.compiler.compiler.PackageBuilder.addPackage(PackageBuilder.java:964)
    at org.drools.compiler.compiler.PackageBuilder.addPackageFromDrl(PackageBuilder.java:455)
    at org.drools.compiler.compiler.PackageBuilder.addPackageFromDrl(PackageBuilder.java:431)
    at com.binod.DroolsDemo.DemoTest.execteRule(DemoTest.java:29)
    at com.binod.DroolsDemo.DemoTest.main(DemoTest.java:20)
Caused by: org.eclipse.jdt.internal.compiler.classfmt.ClassFormatException
    at org.eclipse.jdt.internal.compiler.classfmt.ClassFileReader.<init>(ClassFileReader.java:372)
    at org.drools.compiler.commons.jci.compilers.EclipseJavaCompiler$2.createNameEnvironmentAnswer(EclipseJavaCompiler.java:303)
    at org.drools.compiler.commons.jci.compilers.EclipseJavaCompiler$2.findType(EclipseJavaCompiler.java:274)
    ... 31 more
SLF4J:未能加载类“org.SLF4J.impl.StaticLoggerBinder”。
SLF4J:默认为无操作(NOP)记录器实现
SLF4J:参见http://www.slf4j.org/codes.html#StaticLoggerBinder 详情请参阅。
警告:发生了非法的反射访问操作
警告:org.drools.core.rule.builder.dial.asm.ClassGenerator(文件:/C:/Users/bojaj/.m2/repository/org/drools/drools-core/6.0.1.Final/drools-core-6.0.1.Final.jar)对方法java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int)的非法反射访问
警告:请考虑向Or.DooLo.C.E.Rule.Buudi.Dalc.as.Casic生成器的维护者报告这一点。
警告:使用--invalize access=warn以启用对进一步非法访问操作的警告
警告:所有非法访问操作将在未来版本中被拒绝
线程“main”java.lang.RuntimeException中出现异常:类格式错误
在org.drools.compiler.commons.jci.compilers.EclipseJavaCompiler$2.findType(EclipseJavaCompiler.java:279)
在org.drools.compiler.commons.jci.compilers.EclipseJavaCompiler$2.findType(EclipseJavaCompiler.java:219)
位于org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.askForType(LookupEnvironment.java:113)
位于org.eclipse.jdt.internal.compiler.lookup.unsolvedReferenceBinding.resolve(unsolvedReferenceBinding.java:49)
位于org.eclipse.jdt.internal.compiler.lookup.BinaryTypeBinding.resolveType(BinaryTypeBinding.java:122)
位于org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.getType(LookupEnvironment.java:1160)
位于org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.getResolvedType(LookupEnvironment.java:1091)
位于org.eclipse.jdt.internal.compiler.lookup.Scope.getJavaLangString(Scope.java:2288)
位于org.eclipse.jdt.internal.compiler.ast.StringLiteral.literalType(StringLiteral.java:72)
位于org.eclipse.jdt.internal.compiler.ast.Literal.resolveType(Literal.java:45)
位于org.eclipse.jdt.internal.compiler.ast.MessageSend.resolveType(MessageSend.java:374)
位于org.eclipse.jdt.internal.compiler.ast.Expression.resolve(Expression.java:947)
位于org.eclipse.jdt.internal.compiler.ast.AbstractMethodDeclaration.resolveStatements(AbstractMethodDeclaration.java:456)
位于org.eclipse.jdt.internal.compiler.ast.MethodDeclaration.resolveStatements(MethodDeclaration.java:252)
位于org.eclipse.jdt.internal.compiler.ast.AbstractMethodDeclaration.resolve(AbstractMethodDeclaration.java:415)
位于org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.resolve(TypeDeclaration.java:1148)
位于org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.resolve(TypeDeclaration.java:1258)
在org.eclipse.jdt.internal.compiler.ast.compileationUnitDeclaration.resolve(compileationUnitDeclaration.java:539)上
位于org.eclipse.jdt.internal.compiler.compiler.process(compiler.java:763)
位于org.eclipse.jdt.internal.compiler.compiler.compile(compiler.java:468)
位于org.drools.compiler.commons.jci.compilers.EclipseJavaCompiler.compile(EclipseJavaCompiler.java:405)
位于org.drools.compiler.commons.jci.compilers.AbstractJavaCompiler.compile(AbstractJavaCompiler.java:49)
在org.drools.compiler.rule.builder.dialen.java.javadialen.compileAll(javadialen.java:405)上
位于org.drools.compiler.compiler.方言编译器注册表.compileAll(方言编译器注册表.java:46)
在org.drools.compiler.compiler.PackageRegistry.compileAll(PackageRegistry.java:110)
位于org.drools.compiler.compiler.PackageBuilder.compileAll(PackageBuilder.java:1334)
位于org.drools.compiler.compiler.PackageBuilder.compileAllRules(PackageBuilder.java:975)
位于org.drools.compiler.compiler.PackageBuilder.addPackage(PackageBuilder.java:964)
位于org.drools.compiler.compiler.PackageBuilder.addPackageFromDrl(PackageBuilder.java:455)
位于org.drools.compiler.compiler.PackageBuilder.addPackageFromDrl(PackageBuilder.java:431)
在com.binod.DroolsDemo.demost.execteRule上(demost.java:29)
位于com.binod.DroolsDemo.demost.main(demost.java:20)
原因:org.eclipse.jdt.internal.compiler.classfmt.ClassFormatException
位于org.eclipse.jdt.internal.compiler.classfmt.ClassFileReader.(ClassFileReader.java:372)
位于org.drools.compiler.commons.jci.compilers.EclipseJavaCompiler$2.createNameEnvironmentAnswer(EclipseJavaCompiler.java:303)
在org.drools.compiler.commons.jci.compilers.EclipseJavaCompiler$2.findType(EclipseJavaCompiler.java:274)
... 还有31个

请提供帮助

您正在使用较旧版本的Drools。也许您正在使用比Drools版本6更新的JVM版本编译Java模型类。我使用Java11和Drools 7.39.0.Final,它可以按预期工作

    <dependency>
        <groupId>org.drools</groupId>
        <artifactId>drools-core</artifactId>
        <version>7.39.0.Final</version>
    </dependency>

org.drools
流涎核
7.39.0.1决赛

添加所需的java和drl代码段。请添加相关代码。感谢您的帮助,我指定了另一个JRE,它成功了