首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当我尝试从SBT运行程序时,Drools无法编译规则

当我尝试从SBT运行程序时,Drools无法编译规则
EN

Stack Overflow用户
提问于 2019-07-03 13:50:02
回答 1查看 406关注 0票数 0

我是Drools的新手;我试图通过示例来学习Drools,但似乎我的设置有问题,因为我无法成功运行我的应用程序。

我的规则是:

代码语言:javascript
复制
package com.example.rules

import newexample.Person;

rule "Is of valid age"

    when
        $p : Person( age < 18 )
    then
        $p.setValid( false );
end

和设置:

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<kmodule xmlns="http://jboss.org/kie/6.0.0/kmodule">
    <kbase name="rules" packages="rules">
        <ksession name="ksession-rule"/>
    </kbase>
</kmodule>

当我尝试运行我的应用程序时,我得到这个错误:

代码语言:javascript
复制
... - Adding Service org.drools.compiler.kie.builder.impl.KieServicesImpl

... - Adding Service org.drools.compiler.builder.impl.KnowledgeBuilderFactoryServiceImpl

...  - Found kmodule: file:/.../poc-drools/target/scala-2.12/test-classes/META-INF/kmodule.xml
... - KieModule URL type=file url=/.../poc-drools/target/scala-2.12/test-classes
... - Unable to find pom.properties in /.../poc-drools/target/scala-2.12/test-classes
... - As folder project tried to fall back to pom.xml, but could not find one
... - Unable to load pom.properties from/.../poc-drools/target/scala-2.12/test-classes
... - Cannot find maven pom properties for this project. Using the container's default ReleaseId
... - Discovered classpath module org.default:artifact:1.0.0
... - KieModule was added: FileKieModule[releaseId=org.default:artifact:1.0.0,file=/.../poc-drools/target/scala-2.12/test-classes]
... - File 'rules/1th.drl' is in folder 'rules' but declares package 'com.example.rules'. It is advised to have a correspondance between package and folder names.
... - Unable to build KieBaseModel:defaultKieBase
Rule Compilation error : [Rule name='Is of valid age']
    com/example/rules/Rule_Is_of_valid_age734850681.java (1:0) : The type java.lang.Object cannot be resolved. It is indirectly referenced from required .class files
    com/example/rules/Rule_Is_of_valid_age734850681.java (1:0) : The type java.io.Serializable cannot be resolved. It is indirectly referenced from required .class files
    com/example/rules/Rule_Is_of_valid_age734850681.java (3:136) : Implicit super constructor Object() is undefined for default constructor. Must define an explicit constructor
    com/example/rules/Rule_Is_of_valid_age734850681.java (6:369) : java.lang.Exception cannot be resolved to a type

我使用的是Scala 2.13、SBT 1.2.6、jvm1.8和MacOS,我已经在sdkamn上安装了JVM。当我用Maven初始化项目时,一切都在找!但在使用sbt时,我会遇到错误。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-22 12:23:42

似乎当我的包含Drools的应用程序在与SBT相同的JVM进程中运行时,它遇到了可用类和类路径的问题!我没有找出真正的原因,但当我配置我的项目在单独的JVM进程中运行应用程序时,它起作用了:

代码语言:javascript
复制
fork := true
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56863661

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档