2017-06-09 27 views
7

Tôi đang cố gắng sử dụng khởi động mùa xuân với java 9 và gradle. Tôi không thể chạy mã đơn giản của tôi, tôi nhận được báo lỗi dưới đây đề cập: -java 9 module đọc gói X từ A và B

Information:java: Errors occurred while compiling module 'Java9Gradle_main' 
Information:javac 9-ea was used to compile java sources 
Information:6/9/2017 10:40 PM - Compilation completed with 65 errors and 0 warnings in 15s 200ms 
Error:java: module reads package org.apache.commons.logging from both jcl.over.slf4j and commons.logging 
Error:java: module reads package org.apache.commons.logging.impl from both jcl.over.slf4j and commons.logging 
Error:java: module spring.boot.starter.web reads package org.apache.commons.logging from both jcl.over.slf4j and commons.logging 
Error:java: module spring.boot.starter.web reads package org.apache.commons.logging.impl from both jcl.over.slf4j and commons.logging 
Error:java: module spring.boot.autoconfigure reads package org.apache.commons.logging from both jcl.over.slf4j and commons.logging 
Error:java: module spring.boot.autoconfigure reads package org.apache.commons.logging.impl from both jcl.over.slf4j and commons.logging 
Error:java: module spring.boot.starter.logging reads package org.apache.commons.logging from both jcl.over.slf4j and commons.logging 
Error:java: module spring.boot.starter.logging reads package org.apache.commons.logging.impl from both jcl.over.slf4j and commons.logging 
Error:java: module spring.core reads package org.apache.commons.logging from both jcl.over.slf4j and commons.logging 
Error:java: module spring.core reads package org.apache.commons.logging.impl from both jcl.over.slf4j and commons.logging 
Error:java: module snakeyaml reads package org.apache.commons.logging from both jcl.over.slf4j and commons.logging 
Error:java: module snakeyaml reads package org.apache.commons.logging.impl from both jcl.over.slf4j and commons.logging 
Error:java: module spring.boot.starter.tomcat reads package org.apache.commons.logging from both jcl.over.slf4j and commons.logging 
Error:java: module spring.boot.starter.tomcat reads package org.apache.commons.logging.impl from both jcl.over.slf4j and commons.logging 
Error:java: module hibernate.validator reads package org.apache.commons.logging from both jcl.over.slf4j and commons.logging 
Error:java: module hibernate.validator reads package org.apache.commons.logging.impl from both jcl.over.slf4j and commons.logging 
Error:java: module jackson.databind reads package org.apache.commons.logging from both jcl.over.slf4j and commons.logging 
Error:java: module jackson.databind reads package org.apache.commons.logging.impl from both jcl.over.slf4j and commons.logging 
Error:java: module spring.web reads package org.apache.commons.logging from both jcl.over.slf4j and commons.logging 
Error:java: module spring.web reads package org.apache.commons.logging.impl from both jcl.over.slf4j and commons.logging 
Error:java: module spring.webmvc reads package org.apache.commons.logging from both jcl.over.slf4j and commons.logging 
Error:java: module spring.webmvc reads package org.apache.commons.logging.impl from both jcl.over.slf4j and commons.logging 
Error:java: module spring.context reads package org.apache.commons.logging from both jcl.over.slf4j and commons.logging 
Error:java: module spring.context reads package org.apache.commons.logging.impl from both jcl.over.slf4j and commons.logging 
Error:java: module logback.classic reads package org.apache.commons.logging from both jcl.over.slf4j and commons.logging 
Error:java: module logback.classic reads package org.apache.commons.logging.impl from both jcl.over.slf4j and commons.logging 
Error:java: module jcl.over.slf4j reads package org.apache.commons.logging from both jcl.over.slf4j and commons.logging 
Error:java: module jcl.over.slf4j reads package org.apache.commons.logging.impl from both jcl.over.slf4j and commons.logging 
Error:java: module jul.to.slf4j reads package org.apache.commons.logging from both jcl.over.slf4j and commons.logging 
Error:java: module jul.to.slf4j reads package org.apache.commons.logging.impl from both jcl.over.slf4j and commons.logging 
Error:java: module log4j.over.slf4j reads package org.apache.commons.logging from both jcl.over.slf4j and commons.logging 
Error:java: module log4j.over.slf4j reads package org.apache.commons.logging.impl from both jcl.over.slf4j and commons.logging 
Error:java: module commons.logging reads package org.apache.commons.logging from both jcl.over.slf4j and commons.logging 
Error:java: module commons.logging reads package org.apache.commons.logging.impl from both jcl.over.slf4j and commons.logging 
Error:java: module tomcat.embed.core reads package org.apache.commons.logging from both jcl.over.slf4j and commons.logging 
Error:java: module tomcat.embed.core reads package org.apache.commons.logging.impl from both jcl.over.slf4j and commons.logging 
Error:java: module tomcat.embed.el reads package org.apache.commons.logging from both jcl.over.slf4j and commons.logging 
Error:java: module tomcat.embed.el reads package org.apache.commons.logging.impl from both jcl.over.slf4j and commons.logging 
Error:java: module tomcat.embed.websocket reads package org.apache.commons.logging from both jcl.over.slf4j and commons.logging 
Error:java: module tomcat.embed.websocket reads package org.apache.commons.logging.impl from both jcl.over.slf4j and commons.logging 
Error:java: module validation.api reads package org.apache.commons.logging from both jcl.over.slf4j and commons.logging 
Error:java: module validation.api reads package org.apache.commons.logging.impl from both jcl.over.slf4j and commons.logging 
Error:java: module jboss.logging reads package org.apache.commons.logging from both jcl.over.slf4j and commons.logging 
Error:java: module jboss.logging reads package org.apache.commons.logging.impl from both jcl.over.slf4j and commons.logging 
Error:java: module classmate reads package org.apache.commons.logging from both jcl.over.slf4j and commons.logging 
Error:java: module classmate reads package org.apache.commons.logging.impl from both jcl.over.slf4j and commons.logging 
Error:java: module jackson.annotations reads package org.apache.commons.logging from both jcl.over.slf4j and commons.logging 
Error:java: module jackson.annotations reads package org.apache.commons.logging.impl from both jcl.over.slf4j and commons.logging 
Error:java: module jackson.core reads package org.apache.commons.logging from both jcl.over.slf4j and commons.logging 
Error:java: module jackson.core reads package org.apache.commons.logging.impl from both jcl.over.slf4j and commons.logging 
Error:java: module spring.aop reads package org.apache.commons.logging from both jcl.over.slf4j and commons.logging 
Error:java: module spring.aop reads package org.apache.commons.logging.impl from both jcl.over.slf4j and commons.logging 
Error:java: module spring.beans reads package org.apache.commons.logging from both jcl.over.slf4j and commons.logging 
Error:java: module spring.beans reads package org.apache.commons.logging.impl from both jcl.over.slf4j and commons.logging 
Error:java: module spring.expression reads package org.apache.commons.logging from both jcl.over.slf4j and commons.logging 
Error:java: module spring.expression reads package org.apache.commons.logging.impl from both jcl.over.slf4j and commons.logging 
Error:java: module logback.core reads package org.apache.commons.logging from both jcl.over.slf4j and commons.logging 
Error:java: module logback.core reads package org.apache.commons.logging.impl from both jcl.over.slf4j and commons.logging 
Error:java: module slf4j.api reads package org.apache.commons.logging from both jcl.over.slf4j and commons.logging 
Error:java: module slf4j.api reads package org.apache.commons.logging.impl from both jcl.over.slf4j and commons.logging 
Error:java: module spring.boot.starter reads package org.apache.commons.logging from both jcl.over.slf4j and commons.logging 
Error:java: module spring.boot.starter reads package org.apache.commons.logging.impl from both jcl.over.slf4j and commons.logging 
Error:java: module spring.boot reads package org.apache.commons.logging from both jcl.over.slf4j and commons.logging 
Error:java: module spring.boot reads package org.apache.commons.logging.impl from both jcl.over.slf4j and commons.logging 
D:\project\Java9Gradle\src\main\java\module-info.java 
Error:(1, 1) java: module Java9Gradle.main reads package org.apache.commons.logging from both jcl.over.slf4j and commons.logging 

phụ thuộc tập tin của tôi và tập tin module-info.java rất thẳng về phía trước.

module Java9Gradle.main { 
    requires spring.boot; 
} 


group 'Java9Gradle' 
version '1.0-SNAPSHOT' 

apply plugin: 'java' 

sourceCompatibility = 1.9 

repositories { 
    mavenCentral() 
} 

dependencies { 
    // https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter 
    compile group: 'org.springframework.boot', name: 'spring-boot-starter', version: '1.5.3.RELEASE' 
    // https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web 
    compile group: 'org.springframework.boot', name: 'spring-boot-starter-web', version: '1.5.3.RELEASE' 
    testCompile group: 'junit', name: 'junit', version: '4.12' 
} 

Ai đó có thể vui lòng trợ giúp ??

Cảm ơn,

Amar

Trả lời

4

Loại trừ sự phụ thuộc bắc cầu làm cho nó hoạt động và điều chỉnh module-info.java quá !!!

compile("org.springframework.boot:spring-boot-starter:1.5.3.RELEASE") { 
     exclude group: 'commons-logging', module: 'commons-logging' 
    } 
    compile("org.springframework.boot:spring-boot-starter-web:1.5.3.RELEASE"){ 
     exclude group: 'commons-logging', module: 'commons-logging' 
    } 
+1

Cần có những điều chỉnh nào trong tệp module-info.java? – JMess

4

Theo Jigsaw specs

Không can thiệp - Trình biên dịch Java, máy ảo, và thời gian chạy hệ thống phải đảm bảo rằng các module có chứa các gói của cùng một tên không ảnh hưởng lẫn nhau. Nếu hai mô-đun riêng biệt chứa các gói có cùng tên thì, từ góc nhìn của từng mô-đun, tất cả các loại và thành viên trong gói đó chỉ được xác định bởi mô-đun đó. Mã trong gói đó trong một mô-đun không được truy cập các loại gói riêng tư hoặc thành viên trong gói đó trong mô-đun khác.

này được gọi là gói chia trong câu trả lời của @Andy here. Giải pháp do đó là để hủy các gói này và đảm bảo rằng các gói được bao gồm trong các mô-đun của bạn jcl.over.slf4jcommons.logging chỉ được truy cập thông qua một mô-đun.


Bạn có thể phân tích tất cả phụ thuộc spring-boot-starter:1.5.3.RELEASEspring-boot-starter-web:1.5.3.RELEASE để đảm bảo một trong hai module được bao gồm trong dự án của bạn.

Các vấn đề liên quan