执行以下行时,我的服务器停止了第二次请求。
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;
}
test.js
add = function(a, b) {
return a + b;
}
我不想为每个请求评估js,所以我使用Invocable作为静态。
这是控制台中抛出的错误
Java Runtime Environment检测到致命错误:
SIGSEGV(0xb)at pc = 0x0000000121d6f4b4,pid = 791,tid = 33539
JRE版本:Java(TM)SE运行时环境(8.0_25-b17)(构建 1.8.0_25-b17)Java VM:Java HotSpot(TM)64位服务器VM(25.25-b02混合模式bsd-amd64压缩oops)有问题的框架:C [libjav8651059438244345661.dylib + 0x184b4] _ZN2v811HandleScopeC1Ev +的0x84
无法编写核心转储。核心转储已被禁用。启用 核心倾销,尝试" ulimit -c unlimited"再次启动Java之前
包含更多信息的错误报告文件保存为: hs_err_pid791.log
如果您想提交错误报告,请访问:
http://bugreport.sun.com/bugreport/crash.jsp事故发生了 在本机代码中的Java虚拟机之外。看有问题 报告错误的框架。