Использование SLF с модулями Java9

Я создал небольшой тестовый проект с использованием java 9 модулей. Структура выглядит так:

.
├── build.gradle
└── src
    ├── main
    │   └── java
    │       ├── module-info.java
    │       └── slfTest
    │           └── Main.java
    └── test
        └── java
            └── slfTest
                └── MainTest.java

(Не стесняйтесь клонировать и смотрите сами: git clone https://github.com/michas2/slfTest.git)

Классы Main и Main Test регистрируют только простой вывод:

    Logger logger = LoggerFactory.getLogger(Main.class);
    logger.info("Hello World");

Теперь работа над gradle run работает так, как ожидалось, но gradle test дает ClassCastException.

    $ gradle run -q
    [main] INFO slfTest.Main - Hello World
    $ gradle test -q
    java.lang.ClassCastException: org.slf4j.simple/org.slf4j.simple.SimpleLoggerFactory cannot be cast to org.gradle.internal.logging.slf4j.OutputEventListenerBackedLoggerContext
            at org.gradle.internal.logging.slf4j.Slf4jLoggingConfigurer.configure(Slf4jLoggingConfigurer.java:42)
            at org.gradle.internal.logging.config.LoggingSystemAdapter.startCapture(LoggingSystemAdapter.java:54)
            at org.gradle.internal.logging.services.DefaultLoggingManager$StartableLoggingSystem.start(DefaultLoggingManager.java:297)
            at org.gradle.internal.logging.services.DefaultLoggingManager.start(DefaultLoggingManager.java:73)
            at org.gradle.internal.logging.services.DefaultLoggingManager.start(DefaultLoggingManager.java:37)
            at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:83)
            at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:64)
            at worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:62)
            at worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:67)

Удаление модуля java 9 заставляет все работать. Поэтому я предполагаю, что проблема с доступом к модулю. - Как правильно это исправить?


Содержимое module-info.java:

module slfTest {
    requires  org.slf4j;
    exports slfTest;
}

Когда gradle запускает тесты, gradle пытается внедрить свой собственный бэкэнд ведения журнала. - Угадайте, что это та часть, где возникает проблема с доступом к модулю.

Ответы