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

我在java中使用Nashorn脚本引擎计算表达式

下面的
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中