我已经做了更多的挖掘,你可以通过使用位于这里的JDK7的向后移植来让Nashorn使用JDK7:
https://bitbucket.org/ramonza/nashorn-backport
签出该存储库并尝试使用 BitBucket 页面上所述进行构建ant -f make/build.xml
如果您由于 dynalink 而导致构建失败,请在此处应用问题部分中列出的补丁(我假设开发人员将很快将其修补到主存储库中)。
构建它后,您应该在克隆存储库的dist文件夹中获得一个nashorn.jar文件。
现在,您需要使用类似于以下内容的 VM 选项将此 jar 添加到引导类路径中:
-Xbootclasspath/a:C:/nashorn-backport/dist/nashorn.jar
现在你应该能够使用nashorn。为了确保这是我编写的快速测试程序,它将列出可用的发动机工厂:
import javax.script.*;
public class NashornTest {
public static void main(String args[]) {
ScriptEngineManager manager = new ScriptEngineManager();
for (ScriptEngineFactory f : manager.getEngineFactories()) {
printBasicInfo(f);
System.out.println();
}
}
public static void printBasicInfo(ScriptEngineFactory factory) {
System.out.println("engine name=" + factory.getEngineName());
System.out.println("engine version=" + factory.getEngineVersion());
System.out.println("language name=" + factory.getLanguageName());
System.out.println("extensions=" + factory.getExtensions());
System.out.println("language version=" + factory.getLanguageVersion());
System.out.println("names=" + factory.getNames());
System.out.println("mime types=" + factory.getMimeTypes());
}
}
使用 bootclasspath 集运行它将列出 Rhino 和 Nashorn,没有它,你只会看到 Rhino。