2013-06-05 14 views
5

Próbuję uruchomić Oracle'a Nashorn w Javie 7.Nashorn pod Javą 7

Sklonowałem repozytorium i skompilowałem źródło. Wszystko co musiałem zrobić, aby zmusić go do kompilacji było:

  • Zmień jdk.internal.org.objectweb.asm * do org.objectweb.asm *
  • zmienić jeden wiersz, który miał Long.hashCode (..) statyczne.

Wszystko wydaje się szczęśliwe, a Java 7 widzi Nashorna jako silnik skryptowy; ale gdy próbuję i uzyskać instancję:

NashornScriptEngineFactory factory = new NashornScriptEngineFactory(); 
ScriptEngine engine = factory.getScriptEngine(); 

otrzymuję wyjątek:

java.lang.RuntimeException: java.lang.ClassNotFoundException: jdk.nashorn.internal.objects.Global w jdk.nashorn.internal.runtime.Context.newGlobalTrusted (Context.java:831) w jdk.nashorn.internal.runtime.Context.newGlobal (Context.java:636) w jdk.nashorn.api.scripting. NashornScriptEngine $ 2.run (NashornEngine.java:270) at jdk.nashorn.api.scripting.NashornScriptEngine $ 2.run (NashornScriptEngine.java:266) na java.security.AccessController.doPrivileged (metoda podstawowa) na jdk.nashorn.api.scripting.NashornScriptEngine.createNashornGlobal (NashornScriptEngine.java : 266) w jdk.nashorn.api.scripting.NashornScriptEngine (NashornScriptEngine.java:104) w jdk.nashorn.api.scripting.NashornScriptEngine (NashornScriptEngine.java:78) w jdk.nashorn... api.scripting.NashornScriptEngineFactory.getScriptEngine (NashornScriptEngineFactory.java:139)

jdk.nashorn.internal.objects.Global jest na mojej ścieżce zajęć. Czy Nashorn może używać innego programu ładującego klasy?

Odpowiedz

7

Próbowałem już wcześniej uruchomić go pod kontrolą 7 i spotkałem się z tym samym błędem, co Ty. Myślę, że ma to związek z faktem, że Nashorn wykorzystuje niektóre nowe funkcje w Java 8.

Istnieje backport Nashorn dla JDK 7 na bitbucket; Napisałem wpis na blogu opisujący sposób korzystania z niego na moim blogu prac here. Aby uzyskać więcej informacji, patrz także this stack overflow question.

Ten projekt bitbucket nie był od jakiegoś czasu aktualizowany. Zalecam korzystanie z podglądu Java 8, jeśli chcesz grać z Nashorn.

+0

Dzięki. Istnieje wiele zmian w źródle Nashorn między kodem, który jest dostępny teraz, a backbackiem bitbucket. Kod Nashorn, który podaje powyższe błędy, nie znajduje się nawet w wersji bitbucket. – Kong

+0

Przestałem używać go, gdy tylko pojawił się podgląd Java 8, który zawierał Nashorn. Jeśli korzystasz z Nashorn za pośrednictwem interfejsu API JSR223, twój kod będzie działał z Rhino w Javie 7, jeśli zostanie poprawnie napisany i jak się z nimi rozwinie w tej chwili. –

Powiązane problemy