org.graalvm.polyglot 依赖哪个maven
时间: 2023-06-30 07:22:38 浏览: 227
org.graalvm.polyglot 可以通过以下 Maven 依赖进行引入:
```xml
<dependency>
<groupId>org.graalvm.sdk</groupId>
<artifactId>graal-sdk</artifactId>
<version>{graalvm-version}</version>
</dependency>
```
其中 `{graalvm-version}` 为 GraalVM 版本号,例如 `20.3.0`。需要注意的是,该依赖同时依赖于 `org.graalvm.nativeimage:svm` 和 `org.graalvm.truffle:truffle-api`,因此不需要手动添加这两个依赖。
相关问题
org.graalvm.polyglot.PolyglotException: ReferenceError: JavaImporter is not defined
这个错误是因为在GraalVM中,JavaScript引擎默认不支持JavaImporter。JavaImporter是Rhino引擎中的一个特性,用于在JavaScript中导入Java类。然而,在GraalVM中,你需要使用Polyglot引擎来实现多语言交互。
要解决这个错误,你可以使用Polyglot引擎的Polyglot.eval方法来执行JavaScript代码,并使用JavaInterop来导入Java类。下面是一个示例代码:
```java
import org.graalvm.polyglot.Context;
import org.graalvm.polyglot.Value;
public class PolyglotExample {
public static void main(String[] args) {
System.out.println("Hello World from Java!");
Context context = Context.newBuilder().allowAllAccess(true).build();
context.eval("js", "print('Hello World from JavaScript!');");
// 使用Polyglot.eval方法执行JavaScript代码,并导入Java类
Value jsBindings = context.getBindings("js");
jsBindings.putMember("JavaImporter", org.graalvm.polyglot.HostAccess.Reflection);
context.eval("js", "var ArrayList = Java.type('java.util.ArrayList');" +
"var list = new ArrayList();" +
"list.add('Hello');" +
"list.add('World');" +
"print(list);");
}
}
```
这样,你就可以在GraalVM中使用Polyglot引擎来执行JavaScript代码,并导入Java类了。
阅读全文