1. Preguntas
El proyecto java utiliza el código de verificación ArithmeticCaptcha y aparece javax.script ScriptEngine.eval(String)" porque "motor" es nulo
ArithmeticCaptcha captcha = new ArithmeticCaptcha(111, 36);
<dependency>
<groupId>com.github.whvcse</groupId>
<artifactId>easy-captcha</artifactId>
<version>1.6.2</version>
</dependency>
2. Análisis de problemas
nashorn
Se eliminó el motor de JavaScript incorporado en Jdk8 , lo que resultó en un error al usar el código de verificaciónCannot invoke "javax.script.ScriptEngine.eval(String)" because "engine" is null
com.github.whvcse包的easy-captcha
La dependencia del código de verificación se usa en el proyecto Después de actualizar a Jdk17, la interfaz del código de verificación informa un error Cannot invoke "javax.script.ScriptEngine.eval(String)" because "engine" is null
:
La causa del error es obvia. El motor de secuencias de comandos ejecuta la instrucción de la secuencia de comandos e informa de un error porque el motor de ejecución está vacío.
Consultar información relevante El motor de JavaScript que viene con Jdk8 nashorn
se eliminó después de actualizar a Jdk9, lo que generó un error
3. Soluciones
Agregue dependencias del motor de JavaScript al archivo pom nashorn
y reinicie el proyecto
<dependency>
<groupId>org.openjdk.nashorn</groupId>
<artifactId>nashorn-core</artifactId>
<version>15.4</version>
</dependency>