【问题标题】:How to resolve No ScriptEngine found for language js?如何解决 No ScriptEngine found for language js?
【发布时间】:2020-12-10 23:28:21
【问题描述】:

我确定此问题已在网上某处得到解决,但我一直无法找到它。我阅读了另一个answer,但我不确定如何为Javascript添加一个新的ScriptEngine

我编写了一个 Java 应用程序,据我所知,它在其中的任何地方都没有使用 JavaScript。这是一个使用 Maven 的 Spring 应用程序,但在 mvn clean package 和成功构建之后,运行 java -jar app/target/app-X.X.X-SNAPSHOT.jar 会导致 main ERROR No ScriptEngine found for language js

有谁知道为什么一个不使用 JS 的项目会抛出一个错误?是否有任何已知的方法(甚至任何文档)来解决它或与ScriptEngine 相关的其他问题?

2020-12-10 20:43:50,584 main ERROR No ScriptEngine found for language js. Available languages are: 
2020-12-10 20:43:50,641 main ERROR Unable to create file /data/logs/out/out.log java.io.IOException: Could not create directory /data/logs/out
    at org.apache.logging.log4j.core.util.FileUtils.mkdir(FileUtils.java:127)
    at org.apache.logging.log4j.core.util.FileUtils.makeParentDirs(FileUtils.java:144)
    at org.apache.logging.log4j.core.appender.rolling.RollingFileManager$RollingFileManagerFactory.createManager(RollingFileManager.java:650)
    at org.apache.logging.log4j.core.appender.rolling.RollingFileManager$RollingFileManagerFactory.createManager(RollingFileManager.java:631)
    at org.apache.logging.log4j.core.appender.AbstractManager.getManager(AbstractManager.java:113)
    at org.apache.logging.log4j.core.appender.OutputStreamManager.getManager(OutputStreamManager.java:114)
    at org.apache.logging.log4j.core.appender.rolling.RollingFileManager.getFileManager(RollingFileManager.java:205)
    at org.apache.logging.log4j.core.appender.RollingFileAppender$Builder.build(RollingFileAppender.java:146)
    at org.apache.logging.log4j.core.appender.RollingFileAppender$Builder.build(RollingFileAppender.java:62)
    at org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.build(PluginBuilder.java:122)
    at org.apache.logging.log4j.core.config.AbstractConfiguration.createPluginObject(AbstractConfiguration.java:1002)
    at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:942)
    at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:934)
    at org.apache.logging.log4j.core.config.AbstractConfiguration.doConfigure(AbstractConfiguration.java:552)
    at org.apache.logging.log4j.core.config.AbstractConfiguration.initialize(AbstractConfiguration.java:241)
    at org.apache.logging.log4j.core.config.AbstractConfiguration.start(AbstractConfiguration.java:288)
    at org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:579)
    at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:651)
    at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:668)
    at org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:253)
    at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:153)
    at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:45)
    at org.apache.logging.log4j.LogManager.getContext(LogManager.java:194)
    at org.apache.commons.logging.LogAdapter$Log4jLog.<clinit>(LogAdapter.java:155)
    at org.apache.commons.logging.LogAdapter$Log4jAdapter.createLog(LogAdapter.java:122)
    at org.apache.commons.logging.LogAdapter.createLog(LogAdapter.java:89)
    at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:67)
    at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:59)
    at org.springframework.boot.SpringApplication.<clinit>(SpringApplication.java:196)
    at xxx.xxx.xxx.xxx.xxx.Application.main(Application.java:48)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:564)
    at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:48)
    at org.springframework.boot.loader.Launcher.launch(Launcher.java:87)
    at org.springframework.boot.loader.Launcher.launch(Launcher.java:51)
    at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:52)

【问题讨论】:

  • 包括您的整个堆栈跟踪和实际行为:ERROR 输出实际上是否会导致您的程序出现任何问题,或者它只是一个诊断?
  • 已添加。
  • 再次,您的应用程序是否无法启动或出现其他故障? (注意,顺便说一句,log4j 已经过时了,在一个新的应用程序中,你应该使用 slf4j,它是 Boot 默认值,或者 log4j2。)

标签: java spring maven scriptengine


【解决方案1】:

由于您的应用程序在 Log4J 中失败,我假设您在 Log4J 配置中使用了 JavaScript。

在 JDK 15 中删除了 JavaScript 引擎。请参阅 JEP 372: Remove the Nashorn JavaScript Engine

一个可能的解决方案是改用 Groovy。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-03
    • 2019-05-22
    • 1970-01-01
    • 1970-01-01
    • 2016-12-02
    • 2020-07-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多