Nashorn在Java 7下

Kon*_*ong 5 javascript java nashorn

我试图让Oracle的Nashorn在Java 7下运行.

我克隆了回购并编译了源代码.我需要做的就是编译它:

  • 将jdk.internal.org.objectweb.asm.*更改为org.objectweb.asm.*
  • 更改一行具有Long.hashCode()静态的行.

一切似乎都很开心,Java 7将Nashorn视为脚本引擎; 但是当我尝试获取一个实例时:

NashornScriptEngineFactory factory = new NashornScriptEngineFactory();
ScriptEngine engine = factory.getScriptEngine();
Run Code Online (Sandbox Code Playgroud)

我得到了例外:

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)at jdk.nashorn.api.scripting.NashornScriptEngine $ 2.run(NashornScriptEngine.java:270)at jdk.nashorn.api.scripting.NashornScriptEngine $ 2.run(NashornScriptEngine.java:266)at java.security.AccessController.doPrivileged(Native Method)at jdk.nashorn.api.scripting.NashornScriptEngine.createNashornGlobal(NashornScriptEngine.java:266)at jdk.nashorn.api.scripting.NashornScriptEngine.(NashornScriptEngine.java:104)at jdk .nashorn.api.scripting.NashornScriptEngine.(NashornScriptEngine.java:78)at jdk.nashorn.api.scripting.NashornScriptEngineFactory.getScriptEngine(NashornScriptEngineFactory.java:139)

jdk.nashorn.internal.objects.Global在我的课程路径中.Nashorn可能会使用不同的类加载器吗?

Lyn*_*age 7

我尝试让它在之前的7下工作,并遇到了与你相同的错误.我认为这与Nashorn在Java 8中使用一些新功能这一事实有关.

有一个反向移植犀牛的对到位桶JDK 7; 我写了一篇博客文章中详细介绍了如何使用它在我的博客作品在这里.您还可以查看此堆栈溢出问题以获取更多信息.

也就是说到位桶项目已经一段时间没有更新了,我建议你使用的预览的Java 8,如果你想与犀牛玩.