java 9模块从A和B读取软件包X. [英] java 9 module reads package X from A and B

查看:182
本文介绍了java 9模块从A和B读取软件包X.的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用java 9和gradle的spring引导。
我无法运行我的简单代码,我得到了下面提到的错误: - $ / b>

 信息:java:Errors在编译模块'Java9Gradle_main'时发生
信息:使用javac 9-ea编译java源文件
信息:6/9/2017 10:40 PM - 编译完成,65个错误和15个警告在15s内200ms
错误:java:module从jcl.over.slf4j和commons.logging中读取包org.apache.commons.logging
错误:java:module从包中读取org.apache.commons.logging.impl包括jcl.over.slf4j和commons.logging
错误:java:module spring.boot.starter.web从jcl.over.slf4j和commons.logging中读取包org.apache.commons.logging
错误:java:module spring.boot.starter.web从jcl.over.slf4j和commons.logging中读取包org.apache.commons.logging.impl
错误:java:module spring.boot.autocon fig reads reads package org.apache.commons.logging同时来自jcl.over.slf4j和commons.logging
错误:java:mo dule spring.boot.autoconfigure从jcl.over.slf4j和commons.logging中读取包org.apache.commons.logging.impl
错误:java:module spring.boot.starter.logging读取包org.apache。 commons.logging来自jcl.over.slf4j和commons.logging
错误:java:module spring.boot.starter.logging从jcl.over.slf4j和commons中读取包org.apache.commons.logging.impl .logging
错误:java:module spring.core从jcl.over.slf4j和commons.logging中读取软件包org.apache.commons.logging
错误:java:module spring.core读取软件包组织。 apache.commons.logging.impl来自jcl.over.slf4j和commons.logging
错误:java:module snakeyaml从jcl.over.slf4j和commons.logging中读取包org.apache.commons.logging
错误:java:module snakeyaml从jcl.over.slf4j和commons.logging中读取软件包org.apache.commons.logging.impl
错误:java:module spring.boot.starter.tomcat读取软件包组织。来自j的apache.commons.logging cl.over.slf4j和commons.logging
错误:java:module spring.boot.starter.tomcat从jcl.over.slf4j和commons.logging中读取包org.apache.commons.logging.impl
错误:java:module hibernate.validator从jcl.over.slf4j和commons.logging中读取包org.apache.commons.logging
错误:java:module hibernate.validator读取包org.apache.commons.logging .impl来自jcl.over.slf4j和commons.logging
错误:java:module jackson.databind从jcl.over.slf4j和commons.logging中读取包org.apache.commons.logging
错误:java:module jackson.databind从jcl.over.slf4j和commons.logging中读取包org.apache.commons.logging.impl
错误:java:module spring.web read packages org.apache.commons.logging来自jcl.over.slf4j和commons.logging
错误:java:module spring.web从jcl.over.slf4j和commons.logging中读取包org.apache.commons.logging.impl
错误:java:module spring.webmvc读取包o rg.apache.commons.logging来自jcl.over.slf4j和commons.logging
错误:java:module spring.webmvc从jcl.over.slf4j和commons中读取包org.apache.commons.logging.impl .logging
错误:java:module spring.context从jcl.over.slf4j和commons.logging中读取包org.apache.commons.logging
错误:java:module spring.context读取程序包组织。 apache.commons.logging.impl来自jcl.over.slf4j和commons.logging
错误:java:module logback.classic从jcl.over.slf4j和commons.logging中读取包org.apache.commons.logging
错误:java:module logback.classic从jcl.over.slf4j和commons.logging中读取包org.apache.commons.logging.impl
错误:java:module jcl.over.slf4j reads package从jcl.over.slf4j和commons.logging获得org.apache.commons.logging
错误:java:module jcl.over.slf4j从jcl.over.slf4j中读取包org.apache.commons.logging.impl和commons.logging
错误:java:module jul.to.sl f4j从jcl.over.slf4j和commons.logging中读取包org.apache.commons.logging
错误:java:module jul.to.slf4j从jcl中读取包org.apache.commons.logging.impl。 over.slf4j和commons.logging
错误:java:module log4j.over.slf4j从jcl.over.slf4j和commons.logging中读取包org.apache.commons.logging
错误:java:module log4j.over.slf4j从jcl.over.slf4j和commons.logging中读取包org.apache.commons.logging.impl
错误:java:module commons.logging从两者中读取包org.apache.commons.logging jcl.over.slf4j和commons.logging
错误:java:module commons.logging从jcl.over.slf4j和commons.logging中读取包org.apache.commons.logging.impl
错误:java :模块tomcat.embed.core从jcl.over.slf4j和commons.logging中读取包org.apache.commons.logging
错误:java:module tomcat.embed.core读取包org.apache.commons.logging .impl来自jcl.over.slf4j和commons.logging
错误:java:module tomcat.embed.el从jcl.over.slf4j和commons.logging中读取包org.apache.commons.logging
错误:java:module tomcat.embed.el读取包org.apache。 commons.logging.impl来自jcl.over.slf4j和commons.logging
错误:java:module tomcat.embed.websocket从jcl.over.slf4j和commons.logging中读取包org.apache.commons.logging
错误:java:module tomcat.embed.websocket从jcl.over.slf4j和commons.logging中读取包org.apache.commons.logging.impl
错误:java:module validation.api读取包org.apache.commons.logging来自jcl.over.slf4j和commons.logging
错误:java:module validation.api从jcl.over.slf4j和commons中读取包org.apache.commons.logging.impl .logging
错误:java:module jboss.logging从jcl.over.slf4j和commons.logging中读取包org.apache.commons.logging
错误:java:module jboss.logging读取包org。来自jcl的apache.commons.logging.impl。 over.slf4j和commons.logging
错误:java:module classmate从jcl.over.slf4j和commons.logging中读取包org.apache.commons.logging
错误:java:module classmate read package org .apache.commons.logging.impl同时来自jcl.over.slf4j和commons.logging
错误:java:module jackson.annotations从jcl.over.slf4j和commons中读取包org.apache.commons.logging。记录
错误:java:module jackson.annotations从jcl.over.slf4j和commons.logging中读取包org.apache.commons.logging.impl
错误:java:module jackson.core read package org .apache.commons.logging来自jcl.over.slf4j和commons.logging
错误:java:module jackson.core从jcl.over.slf4j和commons中读取包org.apache.commons.logging.impl。记录
错误:java:module spring.aop从jcl.over.slf4j和commons.logging中读取包org.apache.commons.logging
错误:java:module spring.aop读取包org.apache .commons.logging.impl from b其他jcl.over.slf4j和commons.logging
错误:java:module spring.beans从jcl.over.slf4j和commons.logging中读取包org.apache.commons.logging
错误:java:模块spring.beans从jcl.over.slf4j和commons.logging中读取包org.apache.commons.logging.impl
错误:java:module spring.expression从两个jcl读取包org.apache.commons.logging .over.slf4j和commons.logging
错误:java:module spring.expression从jcl.over.slf4j和commons.logging中读取包org.apache.commons.logging.impl
错误:java:模块logback.core从jcl.over.slf4j和commons.logging中读取包org.apache.commons.logging
错误:java:module logback.core从两个jcl读取包org.apache.commons.logging.impl .over.slf4j和commons.logging
错误:java:module slf4j.api从jcl.over.slf4j和commons.logging中读取包org.apache.commons.logging
错误:java:module slf4j .api读取包org.apache.commons.logging.imp l来自jcl.over.slf4j和commons.logging
错误:java:module spring.boot.starter从jcl.over.slf4j和commons.logging中读取包org.apache.commons.logging
错误:java:module spring.boot.starter从jcl.over.slf4j和commons.logging中读取包org.apache.commons.logging.impl
错误:java:module spring.boot读取包org.apache。 commons.logging来自jcl.over.slf4j和commons.logging
错误:java:module spring.boot从jcl.over.slf4j和commons.logging中读取包org.apache.commons.logging.impl
D:\project\Java9Gradle\src\main\java\module-info.java
错误:(1,1)java:module Java9Gradle.main read package org.apache.commons .logging from jcl.over.slf4j and commons.logging

我的依赖关系文件和模块信息.java文件非常简单。

 模块Java9Gradle.main {
需要spring.boot;


$ b group'Java9Gradle'
version'1.0-SNAPSHOT'

apply plugin:'java'

sourceCompatibility = 1.9

存储库{
mavenCentral()
}

依赖项{
// https:// mvnrepository。 com / artifact / org.springframework.boot / spring-boot-starter
编译组:'org.springframework.boot',名称:'spring-boot-starter',版本:'1.5.3.RELEASE'
// https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web
编译组:'org.springframework.boot',名称:'spring-boot- starter-web',version:'1.5.3.RELEASE'
testCompile group:'junit',name:'junit',version:'4.12'
}

有人可以帮忙吗?

谢谢,



Amar

解决方案

根据拼图规格


不干扰 - Java编译器,虚拟机和运行时
系统必须确保包含相同名称
的包的模块不会相互干扰。如果两个不同的模块包含同名的
包,则从每个模块的角度来看,
该包中的所有类型和成员仅由该
模块定义。一个模块中的代码不能访问
包私有类型或其他模块中该包的成员。


在@Andy 此处的答案中,这被称为拆分包。因此,解决方案是将这些包解包并确保包含在您的模块中的包 jcl.over.slf4j commons.logging




您可以分析两个依赖关系 spring -boot-starter:1.5.3.RELEASE spring-boot-starter-web:1.5.3.RELEASE 以确保两个模块包含在您的项目中。


I am trying to use spring boot with java 9 and gradle. I am unable to run my simple code, I get the below mentioned error :-

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

My dependencies file and the module-info.java file are very straight forward.

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'
}

Can someone please help??

Thanks,

Amar

解决方案

According to the Jigsaw specs

Non-interference — The Java compiler, virtual machine, and run-time system must ensure that modules that contain packages of the same name do not interfere with each other. If two distinct modules contain packages of the same name then, from the perspective of each module, all of the types and members in that package are defined only by that module. Code in that package in one module must not be able to access package-private types or members in that package in the other module.

This is referred to as split packages in the answer by @Andy here. The solution thereby is to unsplit these packages and make sure that the packages that are included from your modules jcl.over.slf4j and commons.logging are accessed via only one module.


You can analyze both dependencies spring-boot-starter:1.5.3.RELEASE and spring-boot-starter-web:1.5.3.RELEASE to make sure either of the two modules is included in your project.

这篇关于java 9模块从A和B读取软件包X.的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆