gpt4 book ai didi

java - Drools - 为 TypeDeclaration 创建字段访问器时出错

转载 作者:太空宇宙 更新时间:2023-11-04 12:21:40 25 4
gpt4 key购买 nike

我使用 Drools 和 Java 基于 this tutorial 创建了一个简单的项目。它工作得很好,所以我根据我想做的事情调整了它。我的 DRL 文件使用 mvel 方言(而不是 Java 方言),初始化发生在 DRL 文件内的规则“initial”中。你可以看到这个项目(源代码以及库和DRL文件)here 。我的 DRL 文件看起来不太像下面这样:

package omd
dialect "mvel"
declare ocenaKwalifikacji
value : Double
end
declare ocenaKandydata
value : Double
end
declare ocenaTestow
value : Double
end
declare ocenaRozmowy
value : Double
end

rule "ocenakandydata/1 "
when
$ocenaRozmowy : ocenaRozmowy(value==5.0000)
$ocenaKwalifikacji : ocenaKwalifikacji(value==5.0000)
$ocenaTestow : ocenaTestow(value==5.0000)
then
insert(new ocenaKandydata (5.0000))
System.out.println("ocenaKandydata setting to 5.0000)");
end
rule "ocenakandydata/2 "
when
$ocenaRozmowy : ocenaRozmowy(value==5.0000)
$ocenaKwalifikacji : ocenaKwalifikacji(value==4.0000)
$ocenaTestow : ocenaTestow(value==5.0000)
then
insert(new ocenaKandydata (5.0000))
System.out.println("ocenaKandydata setting to 5.0000)");
end

...

rule "ocenakandydata/64 "
when
$ocenaRozmowy : ocenaRozmowy(value==2.0000)
$ocenaKwalifikacji : ocenaKwalifikacji(value==2.0000)
$ocenaTestow : ocenaTestow(value==2.0000)
then
insert(new ocenaKandydata (2.0000))
System.out.println("ocenaKandydata setting to 2.0000)");
end

rule "initial"
when
then
/*DATA*/
insert(new ocenaKwalifikacji(5.0));
insert(new ocenaRozmowy(2.0));
insert(new ocenaTestow(2.0));
end

一切正常,但第一行中的包必须是 omd ,尽管所有类都在 com.sample 包中。当我将包名称更改为 com.sample 时,出现以下错误:

Error creating field accessors for TypeDeclaration 'ocenaKandydata' for type 'ocenaKandydata'.

现在有所有的乐趣......

我为 Android 创建了类似的项目。我使用相同的代码,但库来自 another example (以前的确实将类放在 java.* 或 javax.* 包中,这在 Android 编程时是不允许的)。可以看这个项目here 。我将 psc-zatrudnienie-ocena_kandydata.drl 文件放在 /storage/emulated/0/drools/psc-zatrudnienie-ocena_kandydata.drl 下的智能手机存储中。当DRL文件中的包是pl.me.drools2tp(与放置Android应用程序中的所有类相同)时,我收到以下错误(与上面的错误类似):

Error creating field accessors for TypeDeclaration 'ocenaKwalifikacji' for type 'ocenaKwalifikacji'
Error creating field accessors for TypeDeclaration 'ocenaKandydata' for type 'ocenaKandydata'
Error creating field accessors for TypeDeclaration 'ocenaTestow' for type 'ocenaTestow'
Error creating field accessors for TypeDeclaration 'ocenaRozmowy' for type 'ocenaRozmowy'

当我将DRL文件中的包名称更改为其他名称时,错误如下:

Class 'ocenaKwalifikacji' not found for type declaration of 'ocenaKwalifikacji'
Class 'ocenaKandydata' not found for type declaration of 'ocenaKandydata'
Class 'ocenaTestow' not found for type declaration of 'ocenaTestow'
Class 'ocenaRozmowy' not found for type declaration of 'ocenaRozmowy'

有人可以给我一些建议吗? “TypeDeclaration 的字段访问器”到底是什么意思? DRL 文件的 declare 部分中提到的所有类也是在 Java 中定义的,具有 value 字段以及 getter 和 setter。 dekstop版本使用Drools 5.3.0(正如TutorialsPoint网站上所说,有来自http://download.jboss.org/drools/release/5.3.0.Final/的大量JAR文件)。还有一个与我相关的问题:Integration of Drools (Expert System) with Android Projects

如果您能提供一些帮助、提示或示例,我将非常感激。

最诚挚的问候,彼得。

顺便说一句,我使用 IntelliJ 和 Android Studio。

最佳答案

请勿使用 com.sample 中的 Java 类和同一包中的 DRL 文件进行编译,并且声明语句与 Java 类相矛盾。

根据您的问题,我假设您在 DRL 中声明了相同的类副本,与某些 Java 代码形成对比或添加。

只需省略所有声明语句并坚持使用 Java 类保留声明并将 Java 类移动到另一个包中。

顺便说一句:将您的类字段设为私有(private)。

关于java - Drools - 为 TypeDeclaration 创建字段访问器时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38806440/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com