尝试使用Java Nashorn访问js文件时出现空指针异常

问题描述 投票:0回答:1

我正在尝试使用 Java 为 HolyC 制作一个 IDE。我已经使用 Java 开发了一个简单的文本编辑器,所以我用它作为基础。

显然,我计划用于此 IDE 的解释器是用 JavaScript 编写的,因此我尝试将

.js
文件放置在与我的
src
代码相同的
.java.
文件夹中。

我为此使用了 Nashorn,因为我发现它是最适合我的项目的引擎,但问题是当我运行代码时,代码会抛出空指针异常。

这是错误

"C:\Program Files\Java\jdk-21\bin\java.exe" "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2023.2.5\lib\idea_rt.jar=60192:C:\Program Files\JetBrains\IntelliJ IDEA 2023.2.5\bin" -Dfile.encoding=UTF-8 -Dsun.stdout.encoding=UTF-8 -Dsun.stderr.encoding=UTF-8 -classpath "C:\Users\aryan\OneDrive\Documents\Github\prometheus-ide\Prometheus IDE\out\production\Prometheus IDE" interpreter
Exception in thread "main" java.lang.NullPointerException: Cannot invoke "javax.script.ScriptEngine.eval(java.io.Reader)" because "ee" is null
    at interpreter.main(interpreter.java:8)

Process finished with exit code 1

这是我的代码

//importing modules
import javax.script.*;
import java.io.*;
public class interpreter {
    public static void main(String[] args) throws Exception{
        //calling nashorn js engine
        ScriptEngine ee = new ScriptEngineManager().getEngineByName("Nashorn");
        ee.eval(new FileReader("C:/Users/aryan/OneDrive/Documents/Github/prometheus-ide/src/holyc-interpreter.js"));
    }
}

我似乎无法弄清楚出了什么问题,因为这是我在 Java 中遇到的第一个空指针异常

javascript java intellij-idea nashorn
1个回答
0
投票

Nashorn 在 JDK 15 中已被弃用,因此它不再存在于 JDK 中,并抛出空指针异常,正如@duffymo 所说。

Rhino 是@g00se 推荐的替代方案

© www.soinside.com 2019 - 2024. All rights reserved.