9

当我在 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.M52.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 模块中?

4

0 回答 0