package d;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
public class s {
public static void main(String[] args) {
ScriptEngine jse=new ScriptEngineManager().getEngineByName("JavaScript");
try {
String result=String.valueOf(jse.eval("2+2"));
System.out.println(result);
} catch (ScriptException e) {
e.printStackTrace();
}
}
}
返回Exception in thread "main" java.lang.NullPointerException: Cannot invoke "javax.script.ScriptEngine.eval(String)" because "jse" is null
at d/d.s.main(s.java:13)
求解
应该是String result=String.valueOf(jse.eval("2+2"));这里出了问题,可我感觉没什么问题啊
Warning: Nashorn engine is planned to be removed from a future JDK release
4
推荐使用 hutool 工具包
尝试将你要相加的值设置成变量看看,如下代码:
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("javascript");
engine.put("a", 4);
engine.put("b", 3);
Bindings bindings = engine.getBindings(ScriptContext.ENGINE_SCOPE);
// 只能为Double,使用Float和Integer会抛出异常
Double result = (Double) engine.eval("a+b");