Ошибка модуля Java9: невозможно определить имя модуля, неназванный модуль читает пакет, а модуль org.reactivestreams читает пакет из обоих - PullRequest
1 голос
/ 25 февраля 2020

Я получаю 3 разных ошибки.

  1. Невозможно определить имя модуля ..
  2. неназванный модуль читает пакет ..
  3. модуль org.reactivestreams читает пакет из обоих ..

что именно эти ошибки?

build.gradle

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-webflux'
    testImplementation('org.springframework.boot:spring-boot-starter-test') {
     exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
     exclude group: 'org.mockito', module: 'mockito-core'
    }

    testImplementation 'io.projectreactor:reactor-test'
    testImplementation 'org.springframework.restdocs:spring-restdocs-webtestclient'


    compile("io.github.resilience4j:resilience4j-spring-boot2:1.3.1") {
     exclude group: 'org.mockito', module: 'mockito-core'
     }
   compile("io.github.resilience4j:resilience4j-reactor:1.3.1") {
     exclude group: 'org.mockito', module: 'mockito-core'
   }
   compile('org.springframework.boot:spring-boot-starter-aop')
   compile('org.springframework.boot:spring-boot-starter-actuator')
   compile group: 'com.google.code.gson', name: 'gson', version: '2.8.6'
}

Сообщение об ошибке:

Задача: компилировать Java

ошибка: невозможно определить имя модуля для /Users/srihariprasad/.gradle/caches/modules-2/files-2.1/io.github.resilience4j/resilience4j-framework-common/1.3.1/8c16dda86fad3c9251930cad21d87a3434 /resilience4j-framework-common-1.3.1.jar

ошибка: неназванный модуль считывает пакет io.github.resilience4j.timelimiter.autoconfigure как из resilience4j.spring.boot.common, так и из io.github.resilience4j. springboot2

ошибка: неназванный модуль считывает пакет io.github.resilience4j.retry.autoconfigure как из resilience4j.spring.boot.common, так и из io.github.resilience4j.springboot2

ошибка : неназванный модуль читает пакет io.github .resilience4j.ratelimiter.autoconfigure из обоих resilience4j.spring.boot.common и io.github.resilience4j.springboot2 ошибка: неназванный модуль читает пакет io.github.resilience4j.circuitbreaker.autoconfigure из обоих resilience4j.spring.oot.com Ошибка .github.resilience4j.springboot2: неназванный модуль считывает пакет io.github.resilience4j.bulkhead.autoconfigure из файлов resilience4j.spring.boot.common и io.github.resilience4j.springboot2

ошибка: Модуль org.reactivestreams читает пакет io.github.resilience4j.timelimiter.autoconfigure из обоих resilience4j.spring.boot.common и io.github.resilience4j.springboot2

как мы можем найти эти два модуля, из которых баночка, чтобы исключить тех. 1.resilience4j.spring.boot.common, 2. io.github.resilience4j.springboot2. Насколько я понимаю, мне нужно исключить банки из resilience4j-spring-boot2: 1.3.1. Но я не понимаю, как это сделать?

1 Ответ

2 голосов
/ 26 февраля 2020

Пакеты, экспортированные неназванным модулем, могут быть прочитаны только другим неназванным модулем. Невозможно, чтобы именованный модуль мог прочитать (требует) безымянный модуль. http://tutorials.jenkov.com/java/modules.html#unnamed -module

Вы используете Resilience4j в качестве автоматического c модуля, но правило о запрете разделения пакетов также учитывается для автоматических c модулей. Если несколько файлов JAR содержат (и, следовательно, экспортируют) один и тот же пакет Java, то только один из этих файлов JAR можно использовать в качестве автоматического c модуля. Мы должны исправить эту проблему в Resilience4j. До этого вы можете использовать аргумент -classpath для виртуальной машины Java при запуске приложения. В classpath вы можете включить все ваши старые Java классы, как вы делали до Java 9. Все классы, найденные в classpath, будут включены в то, что Java называет безымянный модуль.

...