当我在 SpringBoot 代码中引入 java 9 模块时,我得到了大量的“拆分包”错误。它们无处不在,例如:
Error:java: the unnamed module reads package org.bson.types from both bson and mongodb.driver
Error:java: the unnamed module reads package org.bson.io from both bson and mongodb.driver
Error:java: the unnamed module reads package org.bson from both bson and mongodb.driver
Error:java: the unnamed module reads package com.mongodb.client.model from both mongodb.driver.core and mongodb.driver
Error:java: the unnamed module reads package com.mongodb.client from both mongodb.driver.core and mongodb.driver
Error:java: the unnamed module reads package com.mongodb from both mongodb.driver.core and mongodb.driver
Error:java: the unnamed module reads package org.aopalliance.aop from both aopalliance.repackaged and spring.aop
...
我已经尝试了很多不同的版本,包括1.5.3.RELEASE
,2.0.0.M5
和2.0.0.BUILD-SNAPSHOT
.
当 maven 获取所有依赖项并将它们添加为模块路径上的“自动模块”时,问题似乎出现了。许多依赖项都有重复的包,这在 java 9 中是不允许的。一个糟糕的依赖项的例子就是spring.aop:5.0.1.BUILD-SNAPSHOT
很明显 packages org.aopalliance.aop
。
是 SpringBoot 定义了所有依赖项。我什至尝试使用 spring initializr 中的 vanilla 项目,只添加:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jersey</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
此外,我添加了一个 module-info.java 以使演示代码符合 java 9:
├── src
│ ├── main
│ │ ├── java
│ │ │ ├── com
│ │ │ │ └── example
│ │ │ │ └── demo
│ │ │ │ └── DemoApplication.java
│ │ │ └── module-info.java
│
这不编译。
问题: 有没有人有一个 SpringBoot 项目的工作示例,其中代码组织在 java 9 模块中?