2016-06-23 3 views
0

ist mit Nashorn Skript-Engine in Java auszuführen,Nashorn nicht zur Bewertung der Ausdrücke MATH Funktion

den folgenden Code für log Werke,

ScriptEngineManager mgr = new ScriptEngineManager(); 
ScriptEngine engine = mgr.getEngineByName("noshorn"); 
engine.eval("Math.log(99);"); 

während für log10 ausfällt,

ScriptEngineManager mgr = new ScriptEngineManager(); 
ScriptEngine engine = mgr.getEngineByName("noshorn"); 
engine.eval("Math.log10(99);"); 

es wirft eine Ausnahme Sprichwort,

Caused by: <eval>:1 TypeError: Cannot call undefined 

Wie kann ich dies beheben.Bitte helfen.

Antwort

2

Die Math, die standardmäßig nicht das Java-System Math initialisiert wird. Wenn Sie die Java-Mathematik verwenden möchten:

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

Dann können Sie alle mathematischen Methoden verwenden. Ich bin überrascht, Nashorn bietet nicht die javascript Math Object, die Log10 hätte.

1

Nashorns current Die mathematische Implementierung basiert auf diesem version des Standards, der Math.log10 noch nicht enthält.

@ Matt hat bereits eine Abhilfe (1) gegeben, hier ist eine andere

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