2

在执行以下行时,我的服务器停止了第二个请求。

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 虚拟机之外的本地代码中。请参阅有问题的框架以了解报告错误的位置。

4

0 回答 0