Не могу использовать jcl-over-slf4j в Java 9 - PullRequest
0 голосов
/ 19 сентября 2018

У меня проблема с заменой регистрации общего ресурса на jcl-over-slf4j в модульной системе Java 9.Я исключил ведение журнала общего пользования из maven и добавил jcl-over-slf4j в качестве зависимости:

  <dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-configuration2</artifactId>
    <version>2.3</version>
    <exclusions>
      <exclusion>
        <groupId>commons-logging</groupId>
        <artifactId>commons-logging</artifactId>
      </exclusion>
    </exclusions>
  </dependency>

  <dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>jcl-over-slf4j</artifactId>
    <version>1.8.0-beta2</version>
  </dependency>

Как я вижу, commons-configuration2 - это модуль с автоматическим именем, а jcl-over-slf4jмодуль приложения.

Если я оставляю модуль jcl-over-slf4j из module-info.java, я получаю эту ошибку NoClassDefFoundError, jcl-over-slf4j находится на пути к классам, так как библиотека не можетувидеть его:

 Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/logging/Log
at org.apache.commons.configuration2@2.3/org.apache.commons.configuration2.io.FileSystem.<clinit>(FileSystem.java:37)

Если я добавлю jcl-over-slf4j в module-info.java, я получу эту ошибку недопустимого доступа:

requires transitive org.apache.commons.logging;

Какой org.apacheМодуль .commons.logging на самом деле является модулем jcl-over-slf4j.

xception in thread "main" java.lang.IllegalAccessError: class org.apache.commons.configuration2.io.ConfigurationLogger (in module org.apache.commons.configuration2) cannot access class org.apache.commons.logging.impl.NoOpLog (in module org.apache.commons.logging) because module org.apache.commons.logging does not export org.apache.commons.logging.impl to module org.apache.commons.configuration2
at org.apache.commons.configuration2@2.3/org.apache.commons.configuration2.io.ConfigurationLogger.newDummyLogger(ConfigurationLogger.java:115)

Что я не понимаю, у commons-configuration2 должен быть доступ к нему, и я застрял здесь.Любая помощь приветствуется.

...