在我的 Java 21 项目中,我尝试使用库
io.jsonwebtoken.Jwts
中的包 jjwt-api
。
此依赖项在 module-info.java
内有
no
Automatic-Module-Name
和 no
MANIFEST.MF
条目。
IntelliJ 2024.1.3 建议它需要
jjwt-api
,如果我运行:
import java.lang.module.ModuleFinder;
import java.nio.file.Path;
ModuleFinder.of(Path.of("C:\\Users\\...\\.gradle\\caches\\modules-2\\files-2.1\\io.jsonwebtoken\\jjwt-api\\0.12.5\\ea8243e36f16c2834ad69a048ed8a24aa9dd3e79\\jjwt-api-0.12.5.jar"))
.findAll()
.forEach(System.out::println);
它还可以找到并建议该名称(遵循规范)。
如果我尝试编译我的应用程序,我会收到错误:
Fehler: Modul nicht gefunden: jjwt.api
requires jjwt.api;
^
(德语:“错误:找不到模块”)
dependencies {
implementation("io.jsonwebtoken:jjwt-api:0.12.5")
runtimeOnly("io.jsonwebtoken:jjwt-impl:0.12.5")
runtimeOnly("io.jsonwebtoken:jjwt-gson:0.12.5")
}
这是 IntelliJ、Gradle 或 Javac 错误吗?如何修复它?
我现在已经使用
extra-java-module-info
插件修复了该错误。
我只是将以下几行添加到我的
build.gradle.kts
中:
plugins {
// other plugins
id("org.gradlex.extra-java-module-info") version "1.8"
}
extraJavaModuleInfo {
deriveAutomaticModuleNamesFromFileNames.set(true)
}
(我不会接受这个答案,因为我希望有一种更好、更“原生”的方法,包括不使用外部 gradle 插件的自动模块)