Jeval 评估异常:引号的使用无效

Posted

技术标签:

【中文标题】Jeval 评估异常:引号的使用无效【英文标题】:Jeval EvaluationException: Invalid use of quotes 【发布时间】:2017-06-20 21:43:51 【问题描述】:

当我尝试评估一个表达式时,我收到此错误:net.sourceforge.jeval.EvaluationException: Invalid use of quotes。

为了更清楚。我从 .txt 文件中读取了我的规则,然后将它们放入 hasmap 中。

我试过了:

#mentor = Chung
#mentor = "Chung"
#mentor == "Chung"
#mentor == 'Chung'

但仍然给出另一个错误或相同的错误。

我做错了什么?

List<String> approvalMentors = new ArrayList<>();
Evaluator evaluator = new Evaluator();
evaluator.putVariable("mentor", String.valueOf(graduationApprovalRequest.getMentor()));

for (HashMap.Entry<String, String> entry : this.schoolRules.entrySet()) 
    try 
        if(evaluator.evaluate(entry.getValue()).equals("1.0"))
            approvalMentors.add(entry.getKey());
        
     catch (EvaluationException ex) 
        Logger.getLogger(SchoolRules.class.getName()).log(Level.SEVERE, null, ex);
    

return approvalMentors;

.txt 文件我从中读取了我的规则

#mentor = 'Chung'

【问题讨论】:

【参考方案1】:

JEval 内部验证逻辑假定每个“操作数”(条件表达式的一部分)应该是内置函数、数字、特殊符号或带引号的字符串。如果 == 和双引号之间甚至有一个空格,则引号字符串的正确性检查将失败。每个这样的操作数应该以引号开头和结尾,或者根本没有引号。例如,后者是数字的情况。

【讨论】:

以上是关于Jeval 评估异常:引号的使用无效的主要内容,如果未能解决你的问题,请参考以下文章

为啥 Common Lisp 在没有引号的情况下评估符号本身?

转义 JavaScript 字符串中的单引号以进行 JavaScript 评估

左侧分配是否无效,编译时会出现编译错误或评估错误

条件评估失败。规则项 ID:未知,条件项 ID:未知 - 由于对象的当前状态,操作无效

如何评估无监督异常检测

绩效评估期间的异常值