Log4j2 / Slf4j и Java 11 - PullRequest
       17

Log4j2 / Slf4j и Java 11

0 голосов
/ 11 декабря 2018

В настоящее время я пытаюсь создать приложение с log4j / slf4j и java 11, но я сталкиваюсь с этой проблемой во время выполнения:

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

Код, который является источником этого кода, является инициализацией.моего регистратора:

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
  • Проект maven, который зависит от org.slf4j: slf4j-api: 1.8.0-beta2

Я нахожусь на OSX Mojave с версией Java:

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)

Есть ли у кого-то представление о том, что я делаюнеправильно и как я могу это решить?

1 Ответ

0 голосов
/ 12 декабря 2018

Согласно документации Log4j :

Log4j поддерживает языки сценариев JSR 223, которые будут использоваться в некоторых его компонентах.

и, как сказано в комментариях Alan Bateman от Java 9, вы должны явно добавить модуль сценариев Java либо с --add-modules java.scripting, либо с module-info.java.

Обратите также внимание, что модуль jdk.scripting.nashorn равен устарела в Java 11 и будет удалена в следующем выпуске.

...