Java Nashorn无法执行数学函数
我在java中使用Nashorn脚本引擎计算表达式 下面的Java Nashorn无法执行数学函数,java,typeerror,nashorn,Java,Typeerror,Nashorn,我在java中使用Nashorn脚本引擎计算表达式 下面的log代码有效 ScriptEngineManager mgr = new ScriptEngineManager(); ScriptEngine engine = mgr.getEngineByName("noshorn"); engine.eval("Math.log(99);"); 而对于log10则失败 ScriptEngineManager mgr = new ScriptEngineManager(); ScriptEngi
log
代码有效
ScriptEngineManager mgr = new ScriptEngineManager();
ScriptEngine engine = mgr.getEngineByName("noshorn");
engine.eval("Math.log(99);");
而对于log10
则失败
ScriptEngineManager mgr = new ScriptEngineManager();
ScriptEngine engine = mgr.getEngineByName("noshorn");
engine.eval("Math.log10(99);");
它抛出了一个异常
Caused by: <eval>:1 TypeError: Cannot call undefined
由::1 TypeError引起:无法调用undefined
如何解决此问题。请帮助。默认情况下初始化的
数学
,而不是java系统数学。如果您想了解java的数学用途:
var JavaMath = Java.type("java.lang.Math");
然后你可以使用所有的数学方法。我很惊讶Nashorn没有提供日志10。默认情况下初始化的
数学
,而不是java系统数学。如果您想了解java的数学用途:
var JavaMath = Java.type("java.lang.Math");
然后你可以使用所有的数学方法。我很惊讶Nashorn没有提供log10。Nashorn的数学实现是基于这个标准的,这个标准还没有包含Math.log10
@马特已经给出了一个解决方案(+1),这里是另一个
engine.eval("java.lang.Math.log10(99);");
Nashorns Math实现基于标准的这一部分,该标准尚未包含Math.log10
@马特已经给出了一个解决方案(+1),这里是另一个
engine.eval("java.lang.Math.log10(99);");
Math.log10来自ECMAScript 6->
从jdk8u开始,Nashorn实现了ECMAScript 5.1。(少数)ES6元素被添加到jdk9中。Math.log10来自ECMAScript 6-> 从jdk8u开始,Nashorn实现了ECMAScript 5.1。(少数)ES6元素添加到jdk9中