为什么我的java调用js的eval()方法无结果?

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");