java - poi 和 poi-ooxml 的 Gradle 6/Java 11“找不到模块”错误,但存在 jars
问题描述
我有一个问题让我发疯了好几天。我对 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 jar:
~/.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;
^
我尝试过的事情:
- 删除我的 gradle 缓存并进行完整的 --refresh-dependencies 构建
- 查找所有 poi 和 poi-ooxml 子依赖项并添加到 build.gradle
- 在 build.gradle 中对 poi 和 poi-ooxml 使用“api”而不是“implementation”
我对此束手无策 - 在我的休息日工作!- 真的很感激一些意见。
解决方案
正如我在上面的评论中所说,我只有通过进入 poi 库 jar 并将以下内容添加到 MANIFEST.MF 才能使其工作:
Automatic-Module-Name: poi
自动模块应该是由 java 创建的,没有这个(它只是从 jar 名称生成模块名称),但直到我添加了这个。然而,自动模块是用其他库正确创建的,所以不太清楚是什么让它与众不同。
这不是一个长期的解决方案,但我想我会在这里发布以防它对任何人有帮助。
推荐阅读
- python - 如何在python中重用序言?
- python - 'PosixPath' 对象不可下标[GeoDjango BUG]
- javascript - 特定响应值上的 jquery 自动完成样式列表项
- reactjs - 是否有定义的方法来更新使用 preact-cli 创建的 preact 应用程序?
- vue.js - Nuxt/Vue - 加载数千个组件不好吗?
- c++ - execve 函数在 C++ 中总是失败
- visual-studio - 尽管标记为 PrivateAssets,但 nuget 包中的项目依赖项仍被复制到应用程序 bin 文件夹
- javascript - AWS Amplify 在没有错误日志的情况下无法构建和编译
- javascript - 如何显示这个数组的元素?
- jakarta-ee - Jakarta EE 8 项目中的 Swagger 集成