Java9引入了Multi-Release JARs。 假设我有一个使用java8的多模块Gradle项目: project-root settings.gradle build.gradle /module1 /src ... (common maven structure) /module2 /module3 这是Gradle中常见的多模块项目。假设我需要MR-Jar作为 module1。 我无法添加针对Java9的 module1-java9,因为它的基数是8-到目前为止,我的Gradle和IntelliJ …

2020年11月19日 0条评论 23点热度 阅读全文

这是我的多项目Gradle设置: . └── gradle-module-project    ├── application    ├── build.gradle.kts    ├── gradlew    ├── list    ├── settings.gradle.kts    └── utilities application, utilties和 list是项目,每个项目内部都有一个…

2020年11月19日 0条评论 18点热度 阅读全文

我有使用JavaFX的库,该库具有资源文件夹“fxml”。由gradle使用java 9+作为lib.jar构建的,我将其包含在以相同方式构建的其他项目中。 不幸的是有以下问题: Error occurred during initialization of boot layer java.lang.LayerInstantiationException: Package fxml in both module A (my current project I am trying to build) and modu…

2020年11月1日 0条评论 9点热度 阅读全文

带有open关键字的模块之前和不带有open关键字的模块之间有什么区别?例如: open module foo { } module foo { } 解决方案如下: 为了提供对模块的反射访问,Java 9引入了open关键字。 您可以使用模块声明中的open关键字来创建一个打开的模块。 一个开放的模块将其所有软件包的反射访问权限授予其他模块。 例如,如果您要使用某些严重依赖反射的框架,例如Spring,Hibernate等,则可以使用此关键字为其启用反射访问。 您可以使用包声明中的opens语句为模块的指定包启用反…

2020年10月19日 0条评论 18点热度 阅读全文

我看到在Gradle中,我们将模块声明为artifact/src/main/java/module-info.java,但在OpenJDK中,他们将其声明为src/com.group.artifact/module-info.java。然后在Jenkov中,我们有src/main/java/com.group.artifact/module-info.java。 我很困惑,应该使用哪一个?我有一个Gradle项目,其中包含多个子项目。我正在尝试将子项目用作模块。当我使用Jenkov方法时,IntelliJ IDEA…

2020年10月10日 0条评论 14点热度 阅读全文

在这个项目中,我有一个模块化的设置。有一个父级,其中有两个模块。 这是来自parent-pom.xml的片段: <modules> <module>moduleA</module> <module>moduleB</module> </modules> 这两个模块都有一个module-info.java。这是moduleB的module-info.java: module moduleB { requires spring.web; requi…

2020年10月8日 0条评论 24点热度 阅读全文

需要和需要传递声明的模块语句之间有什么区别?例如: module foo { requires java.base; requires transitive java.compiler; } 解决方案如下: 可读性回顾 如果模块栏requires模块喝了,那么模块系统... 强制存在饮料(称为可靠配置) 允许酒吧阅读饮料(称为readability) 允许bar中的代码访问饮料中导出的包中的公共(public)类(称为accessibility) 如果bar requires transitive drink-必须…

2020年10月5日 0条评论 40点热度 阅读全文

从IDEA 2018.2.1开始,IDE将启动突出显示错误的软件包在模块图中”(来自已模块化的依赖项)。我向项目中添加了module-info.java文件,并添加了必需的requires语句,但是我现在无法访问我的src/main/resources目录中的资源文件。 (有关完整示例,请参见this GitHub project。) 当我使用./gradlew run或./gradlew installDist +结果时包装脚本,我能够读取资源文件,但是当我运行我的应用程序从IDE,不是。 我提交了issue使用…

2020年9月24日 0条评论 33点热度 阅读全文

我一直在玩Java中的简单自定义类加载器,到目前为止,对于与模块无关的类,一切都按预期工作。但是,即使模块相关的find*()方法已被重载,我似乎也找不到使用我的类加载器从模块中加载类的任何方法。我正在尝试从模块“HelloModularWorld”加载一个类并运行它的main。但是,当我指定软件包所在的目录时,它将“正常”加载并报告为未命名模块中。我想念什么? 类加载器只是从文件系统中的其他位置加载类,没有什么特别的。 类加载器的实现: package arch.classloaders; import java…

2020年9月20日 0条评论 22点热度 阅读全文

我将开始对基础架构进行一些升级,更新一些库以使用Gradle 5.1(从4.2起),Spring Boot 2(从1.5起),Java 11(从8起),然后以使用Java 11模块系统为目标。 我已经进行了所有更新,然后我的测试在最后一步中失败了。看来,当我指示Gradle使用模块路径运行测试时,Spring并未拾取@Component对象,并且 Autowiring 失败。 需要明确的是,使用Java 11和默认的类路径时,测试通过了,但是一旦添加了下面所示的compileTestJava和test gradle…

2020年9月17日 0条评论 15点热度 阅读全文