繁体   English   中英

Gradle 6/Java 11 poi 和 poi-ooxml 的“找不到模块”错误,但存在 jars

[英]Gradle 6/Java 11 “module not found” error for poi and poi-ooxml but jars exist

我有一个问题让我发疯了好几天。 我对 Java 模块化系统比较陌生,但在我开始使用 poi 之前,我一直在设法正确声明我的依赖项。

这是我的 build.gradle 片段(gradle v 6.4):

dependencies {

implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.slf4j:log4j-over-slf4j:1.7.30'

implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'commons-net:commons-net:3.6'
implementation 'com.google.guava:guava:28.1-jre'

implementation 'org.apache.poi:poi:4.1.2'
implementation 'org.apache.poi:poi-ooxml:4.1.2'

}

这是正确位于我的 gradle 缓存中的 poi jars:

~/.gradle/caches/modules-2/files-2.1/org.apache.poi$ tree
.
├── poi
│   └── 4.1.2
│       ├── 964bf41cf68bce08e4ef6b2279b559fdf8d454f4
│       │   └── poi-4.1.2.jar
│       ├── 9ce4c76815903772b25324d8419df2d3fe227f4d
│       │   └── poi-4.1.2.pom
│       └── ac5af3832ebaef94562a39591a000338bbae0e4b
│           └── poi-4.1.2-sources.jar
├── poi-ooxml
│   └── 4.1.2
│       ├── 712cc02d5bbe729d2485a1579f3d8dfc47e25b51
│       │   └── poi-ooxml-4.1.2-sources.jar
│       ├── 87d9a22aa9a7dd26e80c360e709f7ee02e32ab3b
│       │   └── poi-ooxml-4.1.2.jar
│       └── ccbcde71e4f0fdfa80e1007dd1babfc9828c629e
│           └── poi-ooxml-4.1.2.pom

这是我的模块信息.java:

module template {
    requires spring.core;
    requires poi;
    requires poi.ooxml;
}

这是我在运行 gradle clean build 时遇到的错误:

error: module not found: poi
    requires poi;
             ^

我尝试过的事情:

  1. 删除我的 gradle 缓存并执行完整的 --refresh-dependencies 构建
  2. 查找所有 poi 和 poi-ooxml 子依赖项并添加到 build.gradle
  3. build.gradle 中的 poi 和 poi-ooxml 使用“api”而不是“实现”

我对此束手无策——在我的休息日工作。 - 真的很感激一些意见。

正如我在上面的评论中所说,我只能通过进入 poi 库 jar 并将以下内容添加到 MANIFEST.MF 来实现此功能:

Automatic-Module-Name: poi

自动模块应该是由 java 创建的,没有这个(它只是从 jar 名称生成模块名称),但直到我添加了这个。 然而,自动模块是用其他库正确创建的,所以不太清楚是什么让它与众不同。

这不是一个长期的解决方案,但我想我会在这里发布以防它对任何人有帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM