我试图让 Oracle 的 Nashorn 在 Java 7 下运行。
我已经克隆了 repo 并编译了源代码。我所要做的就是编译它:
- 将 jdk.internal.org.objectweb.asm.* 更改为 org.objectweb.asm.*
- 更改具有 Long.hashCode() 静态的一行。
一切似乎都很愉快,Java 7 将 Nashorn 视为脚本引擎;但是当我尝试获取一个实例时:
NashornScriptEngineFactory factory = new NashornScriptEngineFactory();
ScriptEngine engine = factory.getScriptEngine();
我得到了例外:
java.lang.RuntimeException: java.lang.ClassNotFoundException: jdk.nashorn.internal.runtime.Context.newGlobalTrusted(Context.java:831) 处 jdk.nashorn.internal.runtime.Context 处的 jdk.nashorn.internal.objects.Global .newGlobal(Context.java:636) 在 jdk.nashorn.api.scripting.NashornScriptEngine$2.run(NashornScriptEngine.java:270) 在 jdk.nashorn.api.scripting.NashornScriptEngine$2.run(NashornScriptEngine.java:266) 在java.security.AccessController.doPrivileged(Native Method) 在 jdk.nashorn.api.scripting.NashornScriptEngine.createNashornGlobal(NashornScriptEngine.java:266) 在 jdk.nashorn.api.scripting.NashornScriptEngine.(NashornScriptEngine.java:104) 在 jdk .nashorn.api.scripting.NashornScriptEngine.(NashornScriptEngine.java:78) 在 jdk.nashorn.api.scripting.NashornScriptEngineFactory。getScriptEngine(NashornScriptEngineFactory.java:139)
jdk.nashorn.internal.objects.Global 在我的课程路径中。Nashorn 是否可能使用不同的类加载器?