2016-06-23 5 views
0

Am с помощью сценария двигатель Насхорн в 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 

Как я могу разрешить это. Пожалуйста, помогите.

ответ

2

Math, который по умолчанию инициализируется не системой Java Math. Если вы хотите использовать математическую математику java:

var JavaMath = Java.type("java.lang.Math"); 

Затем вы можете использовать все математические методы. Я удивлен, что Nashorn не предоставляет javascript Math Object, который имел бы log10.

1

Nashorns current Выполнение математики основывается на этом version стандарта, который еще не содержит Math.log10.

@ Matt уже дали обходной путь (+1), вот еще один

engine.eval("java.lang.Math.log10(99);");