java - JEXL 2.1.1 - 表达式字符串中的大十进制文字导致解析错误

标签 java jexl

我正在尝试在表达式 String 中使用 BigDecimal Literal
我正在使用 JEXL 2.1.1
我正在使用 http://commons.apache.org/jexl/reference/syntax.html#Literals 中提到的文字后缀“h”

JexlEngine expressionFactory = new JexlEngine();
JexlContext context = new MapContext();
context.set ( "a", new BigDecimal( "0.0002" ));
Expression expression = expressionFactory.createExpression(" a > 42.0h "  );
boolean result=(Boolean)expression.evaluate( context );

我遇到了异常

org.apache.commons.jexl2.JexlException$Parsing: h@1:24 parsing error near '... , missing  ...'
at             org.apache.commons.jexl2.parser.JexlParser.jjtreeCloseNodeScope(JexlParser.java:126)
at org.apache.commons.jexl2.parser.Parser.ExpressionStatement(Parser.java:274)
at org.apache.commons.jexl2.parser.Parser.Statement(Parser.java:140)
at org.apache.commons.jexl2.parser.Parser.JexlScript(Parser.java:72)
at org.apache.commons.jexl2.parser.Parser.parse(Parser.java:24)
at org.apache.commons.jexl2.JexlEngine.parse(JexlEngine.java:1248)
at org.apache.commons.jexl2.JexlEngine.createExpression(JexlEngine.java:435)
at org.apache.commons.jexl2.JexlEngine.createExpression(JexlEngine.java:419)

最佳答案

这看起来像是一个文档错误。 正确的大十进制后缀是“B”(而不是“H”)
正确的大整数后缀是“H”(而不是“B”)
通过查看 ASTNumberLiteral.java 可以清楚地验证这一点

我已经提出了这个问题https://issues.apache.org/jira/browse/JEXL-141

关于java - JEXL 2.1.1 - 表达式字符串中的大十进制文字导致解析错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13303841/

相关文章:

java - 当抛出未经检查的异常时,异常处理程序是否有办法输出参数?

java - SSL/TLS 连接重置 - 如何强制 Java 客户端使用 SNI?

java - 寻找 JEXL 过滤器功能

java - JEXL:如何自定义属性访问器

java - 如何在 JEXL 中连接字符串和表达式

java - java中函数必须是静态的

java - 为什么我的 Guava 缓存不断覆盖项目?

java - JTextArea 显示 Caret 而 setEditable 为 false

Java Apache JEXL boolean 表达式问题