首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jdk.nashorn.internal.runtime.Context.getContext抛出java.lang.RuntimeException: java.lang.ClassNotFoundException: Nashorn

jdk.nashorn.internal.runtime.Context.getContext抛出java.lang.RuntimeException: java.lang.ClassNotFoundException: Nashorn
EN

Stack Overflow用户
提问于 2016-11-11 13:13:30
回答 1查看 1.3K关注 0票数 0

我正在尝试使用openjdk版本"1.8.0_91“中的Nashorn。我的代码如下所示。

代码语言:javascript
复制
ScriptEngineManager manager = new ScriptEngineManager(null);
ScriptEngine engine = manager.getEngineByName("nashorn");
engine.eval(getJSReaderFromResorces("env.nashorn.1.2.js"));

它在最后一行抛出一个异常,如下所示。

代码语言:javascript
复制
Caused by: java.lang.ClassNotFoundException: jdk.nashorn.internal.runtime.Context.getContext
    at jdk.nashorn.internal.runtime.NativeJavaPackage.classNotFound(NativeJavaPackage.java:162)
    at jdk.nashorn.internal.scripts.Script$\^eval\_.:program(<eval>:1249)
    at jdk.nashorn.internal.runtime.ScriptFunctionData.invoke(ScriptFunctionData.java:623)
    at jdk.nashorn.internal.runtime.ScriptFunction.invoke(ScriptFunction.java:494)
    at jdk.nashorn.internal.runtime.ScriptRuntime.apply(ScriptRuntime.java:393)
EN

回答 1

Stack Overflow用户

发布于 2016-11-14 21:24:12

代码语言:javascript
复制
engine.eval(getJSReaderFromResorces("env.nashorn.1.2.js"));

这个脚本似乎使用了名为"jdk.nashorn.internal.runtime.Context“的Nashorn内部类。这来自一个名为"jdk.nashorn.internal.runtime“的包。当您在安全管理器设置为on的情况下运行时,此包是受访问保护的,因此对脚本不可见。

在任何情况下,访问nashorn内部/implementation类都是一个好主意-因为对这些类没有兼容性保证。

在java 9中,这些包不是从nashorn模块导出的,因此无论安全管理器处于打开还是关闭状态,都将无法访问。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40541526

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档