Log4j2/Slf4j和Java 11 [英] Log4j2/Slf4j and Java 11

查看:236
本文介绍了Log4j2/Slf4j和Java 11的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我目前正在尝试使用log4j/slf4j和Java 11构建应用程序,但是我在运行时遇到了这个问题:

I'm currently trying to build an app with log4j/slf4j and java 11 but I'm facing this problem at runtime:

2018-12-10 22:09:27,225 main INFO Cannot initialize scripting support because this JRE does not support it. java.lang.NoClassDefFoundError: javax/script/ScriptEngineManager
    at org.apache.logging.log4j.core@2.11.1/org.apache.logging.log4j.core.script.ScriptManager.<init>(ScriptManager.java:69)
    at org.apache.logging.log4j.core@2.11.1/org.apache.logging.log4j.core.config.AbstractConfiguration.initialize(AbstractConfiguration.java:216)
    at org.apache.logging.log4j.core@2.11.1/org.apache.logging.log4j.core.config.AbstractConfiguration.start(AbstractConfiguration.java:250)
    at org.apache.logging.log4j.core@2.11.1/org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:547)
    at org.apache.logging.log4j.core@2.11.1/org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:619)
    at org.apache.logging.log4j.core@2.11.1/org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:636)
    at org.apache.logging.log4j.core@2.11.1/org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:231)
    at org.apache.logging.log4j.core@2.11.1/org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:153)
    at org.apache.logging.log4j.core@2.11.1/org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:45)
    at org.apache.logging.log4j/org.apache.logging.log4j.LogManager.getContext(LogManager.java:194)
    at org.apache.logging.log4j/org.apache.logging.log4j.spi.AbstractLoggerAdapter.getContext(AbstractLoggerAdapter.java:121)
    at org.apache.logging.log4j.slf4j@2.11.1/org.apache.logging.slf4j.Log4jLoggerFactory.getContext(Log4jLoggerFactory.java:49)
    at org.apache.logging.log4j/org.apache.logging.log4j.spi.AbstractLoggerAdapter.getLogger(AbstractLoggerAdapter.java:46)
    at org.apache.logging.log4j.slf4j@2.11.1/org.apache.logging.slf4j.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:29)
    at org.slf4j/org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:355)
    at org.slf4j/org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:380)
    at fr.mrcraftcod.nameascreated/fr.mrcraftcod.nameascreated.NameAsCreated.<clinit>(NameAsCreated.java:39)
Caused by: java.lang.ClassNotFoundException: javax.script.ScriptEngineManager
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:582)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
    ... 17 more

此代码的起源是我的记录器的初始化:

The code that is at the origin of this is the initialization of my logger:

private static final Logger LOGGER = LoggerFactory.getLogger(NameAsCreated.class);

我依赖于:

  • org.apache.logging.log4j:log4j-api:2.11.1
  • org.apache.logging.log4j:log4j-core:2.11.1
  • org.apache.logging.log4j:log4j-slf4j18-impl:2.11.1
  • 依赖于org.slf4j:slf4j-api:1.8.0-beta2的Maven项目

我正在使用Java版本的OSX Mojave:

I'm on OSX Mojave with Java version:

openjdk version "11" 2018-09-25
OpenJDK Runtime Environment AdoptOpenJDK (build 11+28-201810021910)
OpenJDK 64-Bit Server VM AdoptOpenJDK (build 11+28-201810021910, mixed mode)

有人对我做错了什么以及如何解决这个问题有想法吗?

Does someone have an idea of what I'm doing wrong and how I can solve this?

推荐答案

根据

Log4j支持在其某些组件中使用的JSR 223脚本语言.

Log4j provides support for JSR 223 scripting languages to be used in some of its components.

,正如Java 9中Alan Bateman的注释中所述,您必须使用--add-modules java.scriptingmodule-info.java显式添加Java脚本模块.

and as said in the comments by Alan Bateman from Java 9 you have to add explicitly the java scripting module either with --add-modules java.scripting or in module-info.java.

还请注意,模块jdk.scripting.nashorn在Java 11中已弃用,并将其删除在将来的版本中.

Note also that the module jdk.scripting.nashorn is deprecated in Java 11 and will be removed in a future release.

这篇关于Log4j2/Slf4j和Java 11的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆