我想在Eclipse插件中运行以下代码片段:
String scriptEnteredByUser = "print(\"Hello World\");";
NashornScriptEngineFactory factory = new NashornScriptEngineFactory();
ScriptEngine engine = factory.getScriptEngine(e -> false);
engine.eval(scriptEnteredByUser);
它不起作用,但在Eclipse中带来以下警告:
访问限制:'NashornScriptEngineFactory'类型不是API(对所需库'C:\ Program Files(x86)\ Java \ jdk1.8.0_73 \ jre \ lib \ ext \ nashorn.jar'的限制)
运行时出现以下异常:
java.lang.NoClassDefFoundError:jdk / nashorn / api / scripting / NashornScriptEngineFactory
我检查过, nashorn.jar 是JRE的独立部分,所以它应该可以工作。我也不能使用Import-Package
,为什么我呢?这些是JRE类/包。
我找到的可能选项以及为什么它们不起作用/不应该使用:
javax.script
- 不可能;看到我需要开始工作的代码使Nashorn引擎在Eclipse插件中工作的正确方法是什么?
答案 0 :(得分:0)
有可能你的eclipse没有在带有JDK8的虚拟机上运行。
答案 1 :(得分:0)
当运行时配置指定System属性时,它将起作用
-Dosgi.parentClassloader=ext
。该属性记录在Eclipse