在 Java 应用程序中找不到 Graalvm

Graalvm not found within Java application

我有一个 Apache Tomcat servlet,我想在其中 运行 一些 其他 语言 - 为此,我想尝试获得在 OpenJDK 17.

中运行的 Graalvm 功能

我在 build.gradle 文件中添加了以下依赖项:

// https://mvnrepository.com/artifact/org.graalvm.sdk/graal-sdk
implementation group: 'org.graalvm.sdk', name: 'graal-sdk', version: '22.1.0'

Gradle 文件解析和 运行s 没有问题,但是当我尝试访问我的应用程序(servlet)中的 Graalvm classes 时,没有找到任何东西!?

import org.graalvm; // is not found

对于第一个测试,我想要像下面这样简单的东西来工作:

import org.graalvm.polyglot.*;
import org.graalvm.polyglot.proxy.*;

...

try (Context context = Context.create()) {
    context.eval("js", "print('Hello JavaScript!');");
}

但这失败了,因为找不到所需的 class(上下文)。我确定我遗漏了一些简单的东西,但是什么?

更新

感谢@Mohammed Fataka 的建议,Gradle 现在 运行 构建成功。我的 IDE (eclipse) 仍然显示编译错误,但是“Refresh Gradle Project”解决了这个问题。 (右击 Package Explorer 中的项目,然后 Gradle -> 刷新 Gradle 项目).

我现在遇到了一个新问题,即生成的 servlet 崩溃并显示以下错误消息:IllegalStateException: No language and polyglot implementation was found on the classpath. Make sure the truffle-api.jar is on the classpath.

所以我添加了以下依赖:

// https://mavenlibs.com/maven/dependency/com.oracle/truffle-api
implementation group: 'com.oracle', name: 'truffle-api', version: '0.8'  

但这并没有帮助,仍然出现同样的错误。

更新 2

我终于让它工作了,我需要使用不同的依赖项:

// https://mvnrepository.com/artifact/org.graalvm.truffle/truffle-api
implementation group: 'org.graalvm.truffle', name: 'truffle-api', version: '22.1.0'

// https://mvnrepository.com/artifact/org.graalvm.js/js
implementation group: 'org.graalvm.js', name: 'js', version: '22.1.0'

我希望这对其他人有帮助...

嘿,请尝试查看是否需要为此添加编译器,如果需要,请添加到 build.gradle

中的插件部分
    id "org.graalvm.plugin.compiler" version "0.1.0-alpha2"

顺便说一句,我 运行 你得到的代码我没有问题,我可以访问它们,也尝试查看你的存储库。 文档是 here