现象:
应用代码如下:
import javax.script.ScriptEngineManager;ScriptEngineManager manager = new ScriptEngineManager();
manager.getEngineByName("JavaScript");
在TongWeb8上运行出错,日志如下:
Servlet.service() for servlet [aaa] in context with path [web] threw exception [Servlet execution threw an exception] with root cause java.lang.NullPointerExceptionat java.lang.invoke.MethodHandles.insertArgumentsChecks(MethodHandles.java:2400)at java.lang.invoke.MethodHandles.insertArguments(MethodHandles.java:2369)at jdk.nashorn.internal.lookup.MethodHandleFactory.addDebugPrintout(MethodHandleFactory.java:287)at jdk.nashorn.internal.lookup.MethodHandleFactory$StandardMethodHandleFunctionality.debug(MethodHandleFactory.java:376)at jdk.nashorn.internal.lookup.MethodHandleFactory$StandardMethodHandleFunctionality.findStatic(MethodHandleFactory.java:543)at jdk.nashorn.internal.lookup.Lookup.findOwnMH(Lookup.java:225)at jdk.nashorn.internal.lookup.Lookup.<clinit>(Lookup.java:54)at jdk.nashorn.internal.codegen.CompilerConstants.staticCall(CompilerConstants.java:579)at jdk.nashorn.internal.runtime.JSType.<clinit>(JSType.java:82)Servlet.service() for servlet [aaa] in context with path [web] threw exception [Servlet execution threw an exception] with root cause java.lang.NoClassDefFoundError: Could not initialize class jdk.nashorn.internal.lookup.MethodHandleFactoryat jdk.nashorn.internal.runtime.Context.initLoggers(Context.java:1404)at jdk.nashorn.internal.runtime.Context.<init>(Context.java:549)at jdk.nashorn.internal.runtime.Context.<init>(Context.java:466)at jdk.nashorn.api.scripting.NashornScriptEngine$1.run(NashornScriptEngine.java:129)at jdk.nashorn.api.scripting.NashornScriptEngine$1.run(NashornScriptEngine.java:125)at java.security.AccessController.doPrivileged(Native Method)at jdk.nashorn.api.scripting.NashornScriptEngine.<init>(NashornScriptEngine.java:125)at jdk.nashorn.api.scripting.NashornScriptEngineFactory.getScriptEngine(NashornScriptEngineFactory.java:148)at javax.script.ScriptEngineManager.getEngineByName(ScriptEngineManager.java:238)
原因及解决办法:
TongWeb8接管了java.util.logging.Logger日志,可以关闭 “接管 Java Logger” 来解决。