Используйте graalvm через стандартный JDK 11 - PullRequest
0 голосов
/ 22 октября 2018

У меня в проекте используется движок Nashorn Javascript.Я пытаюсь перейти на java11, а также мигрировать из Нашорна в Грааль.Я прочитал здесь , что я могу использовать graal через стандартную установку JDK, начиная с JDK 11. Также я читал там, что Graal-SDK загружаются в центральный Maven, и что есть флаг Java polyglot.js.nashorn-compat для легкой миграции.Итак, я использовал jdk11, добавил зависимость maven в pom.xml и использовал флаг java, но когда я пытаюсь получить движок по имени "graal.js", я получаю здесь ноль:

ScriptEngine engine = engineManager.getEngineByName("graal.js")

Чего мне не хватает?Как заставить это работать?

Ответы [ 2 ]

0 голосов
/ 07 ноября 2018

Вот пример проекта maven, который показывает, как запустить JavaScript-движок GraalVM на JDK11 как с помощью API сценариев, так и API Polyglot.Надеюсь, это поможет!

https://github.com/graalvm/graal-js-jdk11-maven-demo

Суть в том, чтобы добавить необходимые зависимости (graal-sdk, js, js-scriptengine, а также опционально профилировщик и chromeinspector), запустить с включеннымэкспериментальные опции и JVMCI-компилятор (-XX:+UnlockExperimentalVMOptions -XX:+EnableJVMCI) и обновите путь к модулю с помощью Graal Jar (--upgrade-module-path=${compiler.dir}/compiler.jar), который также доступен от maven (org.graalvm.compiler:compiler).

0 голосов
/ 22 октября 2018

Вам не хватает следующих зависимостей:

<dependency>
    <groupId>org.graalvm.js</groupId>
    <artifactId>js-scriptengine</artifactId>
</dependency>
<dependency>
    <groupId>org.graalvm.truffle</groupId>
    <artifactId>truffle-api</artifactId>
</dependency>

js-scriptengine содержит реализацию ScriptEngine: com.oracle.truffle.js.scriptengine.GraalJSScriptEngine.

И необходим трюфель-апи (вы можете получить сообщение об ошибке только в том случае, если инстанцируете GraalJSEngineFactory напрямую:

GraalJSEngineFactory gsf = new GraalJSEngineFactory();

Однако, похоже, отсутствует другой пакет, так как он делаетне работает для меня.

...