在 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
我有一个 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