2016-08-01 54 views
0

我有一个项目来完成,我不能使用javax.script,所以我可以使用Nashorn但不使用javax.script?使用Nashorn但不是javax.script

+0

不太清楚的问题,你能详细说一下吗?你使用最新的Java版本吗?您是否已将JDK或JRE导入到IDE中?你是什​​么意思使用Nashorn但不使用javax.script?你读过一个简单的教程,如[this](http://winterbe.com/posts/2014/04/05/java8-nashorn-tutorial/) – AntJavaDev

+0

当然你可以使用Nashorn。从命令行使用jjs。否则,从代码中使用javax.script.ScriptEngine。我很想知道为什么你认为你不能使用javax.script。它是Java运行时的一部分,与Java 8中的另一个类相同。可能的[X-Y问题](http://xyproblem.info/)。 – ManoDestra

回答

1

您可以使用jdk/bin中的“jjs”命令行工具来评估脚本。该工具可以评估来自文件/网址的脚本,也可以以交互模式工作。该工具不使用javax.script API - 但直接使用Nashorn

1

您可以直接使用Nashorn API,例如,你可以从jdk.nashorn.api.scripting.NashornScriptEngineFactory这个类开始,但是很多API在后面隐含地依赖于javax.script包。不过,我不确定为什么你有这个限制。 javax.script是一个标准的JDK包,它在每一个Java运行时,因为围绕Java 1.5或6

这就是说,直接使用API​​可以让你获得定制ScriptEngine S,因为NashornScriptEngineFactory先后为getScriptEngine()方法的一些重载,让您通过jjs命令行参数,由引擎使用的自定义类加载器等。

使用Nashorn API直接购买你的另一个小事是,你会知道你肯定会得到一个Nashorn引擎,如果你只需要从javax.script请求一个JS引擎就不一定确定。

相关问题