自动模块存在但未找到

问题描述 投票:0回答:1

在我的 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;
                 ^

(德语:“错误:找不到模块”)

构建.gradle.kts

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 错误吗?如何修复它?

java gradle java-module
1个回答
0
投票

我现在已经使用

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 插件的自动模块)

© www.soinside.com 2019 - 2024. All rights reserved.