我正在尝试初始化一个 JexlEngine 对象,但构造函数不允许我这样做(尽管文档说明它应该这样做)。
这是 JexlEngine 类的文档(在 jexl3 中): https ://people.apache.org/~henrib/jexl-3.0/apidocs/org/apache/commons/jexl3/JexlEngine.html
最初代码与 jexl2 导入一起使用,但我最近将项目转换为 Maven,而不得不换成 jexl3。现在构造函数不再起作用。
我错过了什么吗?
我在 Java 1.8 上的 Netbeans 中运行这个项目 - 它是一个 Maven 项目,包含对 jexl3 的依赖项(但是曾经与 jexl2 一起使用)
我的代码:
public static final JexlEngine jexl = new JexlEngine(null, new MyArithmetic(), null, null){};
static {
jexl.setCache(512);
jexl.setLenient(false); // null shouldnt be treated as 0
jexl.setSilent(false); // Instead of logging throw an exception
jexl.setStrict(true);
}
根据文档,应该有一个带有 4 个参数的构造函数,因为我正在尝试运行它,但由于某些奇怪的原因,它不会让我运行它。任何想法为什么?(再次 - 它曾经与 Jexl2 一起使用)
错误日志:
Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project bilbon-core: Compilation failure: Compilation failure:
si/smth/project/bean/CUtil.java:[333,43] constructor JexlEngine in class org.apache.commons.jexl3.JexlEngine cannot be applied to given types;
required: no arguments
found: <nulltype>,si.smth.project.bean.CUtil.MyArithmetic,<nulltype>,<nulltype>
reason: actual and formal argument lists differ in length
si/smth/project/bean/CUtil.java:[333,99] <anonymous si.smth.project.bean.CUtil$1> is not abstract and does not override abstract method newInstance(java.lang.String,java.lang.Object...) in org.apache.commons.jexl3.JexlEngine
si/smth/project/bean/CUtil.java:[336,13] cannot find symbol
symbol: method setCache(int)
location: variable jexl of type org.apache.commons.jexl3.JexlEngine
si/smth/project/bean/CUtil.java:[337,13] cannot find symbol