在执行以下行时,我的服务器停止了第二个请求。
Invocable invocableEngine = load();
Object o1 = invocableEngine.invokeFunction("add",5,6,jsonObj);
private static Invocable invocable =null;
public static Invocable load() throws ScriptException, NoSuchMethodException, FileNotFoundException {
if(invocable!=null){
return invocable;
}
File jsFile = new File("test.js");
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("jav8"); //No I18N
Reader reader = new FileReader(jsFile);
engine.eval(reader);
invocable = (Invocable) engine;
return invocable;
}
测试.js
add = function(a, b) {
return a + b;
}
我不想为每个请求评估 js,所以我将 Invocable 用作静态。
这是控制台中抛出的错误
Java 运行时环境检测到一个致命错误:
SIGSEGV (0xb) 在 pc=0x0000000121d6f4b4,pid=791,tid=33539
JRE 版本:Java(TM) SE Runtime Environment (8.0_25-b17) (build 1.8.0_25-b17) Java VM: Java HotSpot(TM) 64-Bit Server VM (25.25-b02 mixed mode bsd-amd64 compressed oops) 有问题框架:C [libjav8651059438244345661.dylib+0x184b4] _ZN2v811HandleScopeC1Ev+0x84
无法写入核心转储。核心转储已被禁用。要启用核心转储,请在再次启动 Java 之前尝试“ulimit -c unlimited”
包含更多信息的错误报告文件保存为:hs_err_pid791.log
如果您想提交错误报告,请访问:
http ://bugreport.sun.com/bugreport/crash.jsp 崩溃发生在 Java 虚拟机之外的本地代码中。请参阅有问题的框架以了解报告错误的位置。