当前位置: 首页 > 知识库问答 >
问题:

规则编译错误:只能迭代数组或java实例。lang.Iterable语言

葛嘉悦
2023-03-14

我是mongoDb的新手,流口水。我正在用drools编写规则,它正在迭代一个java列表。但是当运行tomcat时,它会给出规则编译错误。

从道获取列表:-

List<XYZ> list = new ArrayList<XYZ>();
Query q = query(where("id").is(userId));
list = getMongoOperation().find(q, XYZ.class, "XYZ"); 

使用drools引擎规则中的列表:-

for(XYZ xyzObj : list) 
{           
}

型号类别:-

@Document(collection="XYZ")
public class XYZ 
{
}

运行tomcat时我得到异常。"规则编译错误:只能遍历一个数组或java.lang.Iterable的实例"

规则文件:-

导入java.util.列表;导入java.util.迭代器;全局com.demo.XYZ列表

规则“1\u Demo\u rule”

当prop: RULEDEMO(属性=="demo")然后

  for(XYZ xyzObj : list)          {                   }

结束

共有1个答案

岳飞航
2023-03-14

由于DRL解析器中的限制,您将无法使用for语句的简短语法。

鉴于此

global List<com.demo.XYZ> list;

用不太好的

for( int i = 0; i < list.size(); i++ ){
    XYZ xyzObj = list.get(i);
    // ...
}
 类似资料:
  • 我正在与ATM案例研究一起工作,从Deitel java如何编程第9版。 案例研究在第13章,第546页(万一有人有这本书并想要查看),我确信我的代码是100%如书中所建议的那样。 我已经设置了所有的代码,但当我尝试运行程序时,它给了我以下信息: 当我试图从类路径使用terminal编译类时,它给出了以下错误: 这是正在进行的课程:直截了当地往前走,但我似乎找不到问题所在。有人帮忙吗?

  • 问题内容: 如果我们查看Java标准 §14.7,就会发现语句可能带有标签前缀,例如: LabeledStatement: 标识符:声明 从理论上讲,标签应该能够标记任何后续的语句。因此,例如,以下内容将相应地进行编译: 直观地,这也可以编译为: 但是以下内容 无法 编译: 即使这样做(请注意范围括号): 因此,问题取决于声明是否为语句。根据标准(和在线文档): 除了表达式语句,还有两种其他类型的

  • 通过前面的学习我们知道 Java 实际上没有多维数组,只有一维数组。多维数组被解释为是数组的数组,所以因此会衍生出一种不规则数组。 规则的 4×3 二维数组有 12 个元素,而不规则数组就不一定了。如下代码静态初始化了一个不规则数组。 int intArray[][] = {{1,2}, {11}, {21,22,23}, {31,32,33}}; 高维数组(二维以及二维以上的数组称为高维数组)是

  • 我最近在部署到我们的共享主机时遇到了问题。从 Visual Studio 通过 Web 部署进行部署时,99% 的时间我在登录后在登录页面或主页上收到此错误。有时我可能会点击几下不同的部分,然后它就会击中。它通常会在几分钟到90分钟后消失。 运行Windows Server 2012 R2 Standard、IIS8和.NET 4.5的Web主机。 Web主机建议我需要使用Visual Studi

  • 问题内容: 我在Mavericks上运行Eclipse并安装了1.7 JDK时遇到编译问题: 类文件的版本错误为51.0,应为49.0 因此,由于这看起来像javac版本控制问题,因此我删除了所有Java版本。安装了1.7_51,安装了Apple提供的1.6版本,以便运行Eclipse,更改了符号链接,因此默认值为1.7。与以前相同的问题,同一项目无法编译,尽管其他项目可以编译, 下一步,将问题分

  • 当我使用maven编译spark java程序时,我得到了一个编译错误,如下所示