Java9 module error: Can not determine the module name, the unnamed module reads package and module org.reactivestreams reads package from both

Java9 module error: Can not determine the module name, the unnamed module reads package and module org.reactivestreams reads package from both

我遇到了 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'
}

错误信息:

任务:compileJava

error: cannot determine module name for /Users/srihariprasad/.gradle/caches/modules-2/files-2.1/io.github.resilience4j/resilience4j-framework-common/1.3.1/8c16dda86fad3c9251930cad21ac87aa34cd8035/resilience4j-framework-common-1.3.1.jar

error: the unnamed module reads package io.github.resilience4j.timelimiter.autoconfigure from both resilience4j.spring.boot.common and io.github.resilience4j.springboot2

错误:未命名模块从 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.boot.common 和 io.github.resilience4j.springboot2

中读取包 io.github.resilience4j.bulkhead.autoconfigure

error: module org.reactivestreams reads package io.github.resilience4j.timelimiter.autoconfigure from both resilience4j.spring.boot.common and io.github.resilience4j.springboot2

我们如何从哪个jar中找到这两个模块,排除那些。 1.resilience4j.spring.boot.common, 2.io.github.resilience4j.springboot2。根据我的理解,我需要从 resilience4j-spring-boot2:1.3.1 中排除 jars。但是我不知道该怎么做?

未命名模块导出的包只能被另一个未命名模块读取。命名模块不可能读取(需要)未命名模块。 http://tutorials.jenkov.com/java/modules.html#unnamed-module

您正在使用 Resilience4j 作为自动模块,但关于不允许拆分包的规则也适用于自动模块。如果多个 JAR 文件包含(并因此导出)相同的 Java 包,那么这些 JAR 文件中只有一个可以用作自动模块。 我们必须在 Resilience4j 中解决这个拆分包问题。在此之前,您可以在 运行 应用程序时使用 Java VM 的 -classpath 参数。在类路径上,您可以包括所有较旧的 Java 类,就像您之前所做的那样 Java 9. 在类路径上找到的所有 类 将包含在 Java 调用未命名模块。