在Drools中“无法找到Class”错误

时间:2014-02-28 07:56:18

标签: java jboss drools

我试图在drools中定义一个简单的函数:

function void difference(List<String> fileOld, List<String> fileNew)
{

   ArrayList<String> add = new ArrayList<String>(fileNew);
   add.removeAll(fileOld);
   System.out.println("files Added: " + add);

   ArrayList<String> remove = new ArrayList<String>(fileOld);
   remove.removeAll(fileNew);
   System.out.println("files Removed: " + remove);
 }   

但是它说在构建函数时无法解析类型List。 java.lang.ClassNotFoundException:无法找到类'List'] 无法对类型为FileData的非静态方法getFileOld()进行静态引用无法对类型为FileData的非静态方法getFileNew()进行静态引用

我的规则是:

rule "files are equal"

when 
    FileData(fileOld == fileNew)        

then
   System.out.println("files are equal");
end

rule "files not equal"
when
    not FileData(fileOld == fileNew)
then
   System.out.println("files are not equal");
   difference(FileData.getFileOld(),FileData.getFileNew()); 
end

fileOld和fileNew是两个不同实例的文件夹中的文件名列表。我试图找到fileOld和fileNew之间的区别,并显示添加/删除的文件列表。

2 个答案:

答案 0 :(得分:0)

在DRL中,情况与Java中的情况非常相似。您可以使用“import”或完整的类名:

import java.util.List
import java.util.ArrayList



function void difference(java.util.List<String> fileOld, 
                         java.util.List<String> fileNew)

阅读Drools文档并没有什么坏处。

答案 1 :(得分:0)

  

无法找到班级'列表']不能   从中获取对静态方法getFileOld()的静态引用   type FileData无法对非静态方法进行静态引用   来自FileData

类型的getFileNew()

从您问题的上述陈述中,您似乎正在通过FileData访问非静态方法(我认为它是一个类)。如果方法是非静态的,那么您无法访问您的方法lisk this

  

Classname.nonstatic_method(不允许)

     

Classname.static_method(允许)

通过使两种方法保持静态来尝试您的代码。 或者创建FileData的对象,然后访问非静态方法