Я пытаюсь запустить 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();
Я получаю исключение:
java.lang.RuntimeException: java.lang.ClassNotFoundException: jdk.nashorn.internal.objects.Global в jdk.nashorn.internal.runtime.Context.newGlobalTrusted(Context.java:831) в jdk.nashorn.internal.runtime.Context .newGlobal(Context.java:636) в jdk.nashorn.api.scripting.NashornScriptEngine$2.run(NashornScriptEngine.java:270) в jdk.nashorn.api.scripting.NashornScriptEngine$2.run(NashornScriptEngine.java:266) в java.security.AccessController.doPrivileged(собственный метод) в jdk.nashorn.api.scripting.NashornScriptEngine.createNashornGlobal(NashornScriptEngine.java:266) в jdk.nashorn.api.scripting.NashornScriptEngine.(NashornScriptEngine.java:104) в jdk .nashorn.api.scripting.NashornScriptEngine.(NashornScriptEngine.java:78) в jdk.nashorn.api.scripting.NashornScriptEngineFactory.getScriptEngine(NashornScriptEngineFactory.java:139)
jdk.nashorn.internal.objects.Global находится в моем пути к классу. Возможно, Nashorn использует другой загрузчик классов?