我正在运行 Java 的 ScriptEngine 类来运行一些代码。当我运行它所说的代码时,我将 IntelliJ 与 Maven 依赖项一起使用
Cannot invoke "javax.script.ScriptEngine.eval(String)" because "this.engine" is null
at Run.Evaluater.<init>(Evaluater.java:19)
该行的代码如下
engine.put("event", event);
engine.put("content", message);
这就是我启动 ScriptEngone 的方式
public ScriptEngineManager man = new ScriptEngineManager();
public ScriptEngine engine = man.getEngineByName("nashorn");
从码云克隆项目运行时遇到此错误。这部分内容是关于验证码的加载。我不明白原因,但这是版本问题。更改JDK版本从13减少到8时问题解决。
从 Java JDK 15 开始,nashorn 引擎已被删除。然后尝试使用此引擎启动所描述的问题异常。
您可以将其添加为外部依赖项。例如,使用maven:
<dependency>
<groupId>org.openjdk.nashorn</groupId>
<artifactId>nashorn-core</artifactId>
<version>15.1</version>
</dependency>
这解释了为什么返回 JDK 8 来解决问题,因为 JDK 8 嵌入了 nashorn 引擎。