You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java 21环境下无需手动安装组件,通过依赖引入执行JavaScript表达式的问题求助

Java 21环境下无需手动安装组件,通过依赖引入执行JavaScript表达式的问题求助

我目前安装的是Java 21版本,知道Nashorn引擎已经不能用了,所以想试试GraalVM,但没办法手动安装任何组件,只能通过引入依赖来实现“开箱即用”的效果。

我已经添加了必要的Maven依赖:

<dependency>
    <groupId>org.graalvm.js</groupId>
    <artifactId>js</artifactId>
    <version>21.1.0</version>
</dependency>
<dependency>
    <groupId>org.graalvm.js</groupId>
    <artifactId>js-scriptengine</artifactId>
    <version>21.1.0</version>
</dependency>

接下来我尝试运行了一个简单的示例代码:

public static void main(String[] args) throws ScriptException {
    try (Context context = Context.newBuilder("js")
            .allowAllAccess(true)
            .build()) {
        // Evaluate JavaScript code
        String jsCode = "console.log('Hello, GraalVM!');";
        context.eval("js", jsCode);
    } catch (Exception e) {
        throw new ScriptException("Script execution failed: " + e.getMessage());
    }
}

但运行后出现了错误:

Exception in thread "main" javax.script.ScriptException: Script
execution failed: A language with id 'js' is not installed. Installed
languages are: []. at org.example.Main.main(Main.java:23)

我还试了另一种方式:

public static void main(String[] args) throws ScriptException {
    ScriptEngineManager manager = new ScriptEngineManager();
    ScriptEngine engine  = manager.getEngineByName("JavaScript");
    engine.eval("print('HI');");
}

结果又遇到了空指针异常:

Exception in thread "main" java.lang.NullPointerException: Cannot
invoke "javax.script.ScriptEngine.eval(String)" because "engine" is
null at org.example.Main.main(Main.java:20)

现在的问题是我没办法手动安装任何组件,只能通过依赖来解决。有没有什么变通方案?或者有没有其他可用的JavaScript引擎可以直接通过依赖引入使用?

备注:内容来源于stack exchange,提问作者user16300149

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.14 16:48:02