我正在尝试使用 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 中遇到的第一个空指针异常
Nashorn 在 JDK 15 中已被弃用,因此它不再存在于 JDK 中,并抛出空指针异常,正如@duffymo 所说。
Rhino 是@g00se 推荐的替代方案