我有一個 Apache Tomcat servlet,我想在其中運行一些其他語言 - 為此,我想嘗試讓Graalvm功能在OpenJDK 17中作業。
我在我的檔案中添加了以下依賴項build.gradle:
// https://mvnrepository.com/artifact/org.graalvm.sdk/graal-sdk
implementation group: 'org.graalvm.sdk', name: 'graal-sdk', version: '22.1.0'
Gradle 檔案決議并運行沒有問題,但是當我嘗試訪問我的應用程式(servlet)中的 Graalvm 類時,什么也沒找到!?
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!');");
}
但這失敗了,因為找不到所需的類(背景關系)。我確定我錯過了一些簡單的東西,但是什么?
更新
感謝@Mohammed Fataka 的建議,Gradle 構建現在可以成功運行。我的 IDE (eclipse) 仍然顯示編譯錯誤,但是“重繪 Gradle 專案”解決了這個問題。(右鍵單擊Package Explorer中的專案,然后單擊Gradle -> Refresh Gradle Project)。
我現在有一個新問題,即生成的 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'
我希望這對其他人有幫助...
uj5u.com熱心網友回復:
嘿,請嘗試查看是否需要為此添加編譯器,如果是,則添加到 build.gradle 中的插件部分
id "org.graalvm.plugin.compiler" version "0.1.0-alpha2"
順便說一句,我運行你得到的代碼我沒有問題,我可以訪問它們,嘗試查看你的存盤庫。檔案在這里
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/475157.html
