You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

模块化Java项目中无法使用com.azure.identity模块的问题

问题:Azure Identity模块在Gradle模块化项目中的依赖异常

问题现象

1. 运行时错误

执行 .\gradlew run 时触发模块查找失败:

> Task :run
java.lang.module.FindException: Module msal4j.persistence.extension not found

> Task :run FAILED

FAILURE: Build failed with an exception.

2. 添加依赖后的编译错误

手动添加 msal4j.persistence.extension 依赖后,编译阶段报错:

> Task :compileJava FAILED
...\test\src\main\java\module-info.java:4: error: module not found: msal4j.persistence.extension
    requires msal4j.persistence.extension;
                               ^
1 error

推测核心原因:msal4j.persistence.extension 是自动模块(无显式module-info.java),导致Gradle模块化编译/运行逻辑识别异常。


相关配置文件

build.gradle.kts

plugins {
    id("java")
    id("application")
}

group = "com.example"
version = "0.1"

repositories {
    mavenCentral()
}

dependencies {
    implementation(platform("com.azure:azure-sdk-bom:1.2.28"))
    implementation("com.azure:azure-identity")
    implementation("com.azure:azure-core")

    implementation("com.microsoft.azure:msal4j-persistence-extension:1.3.0")
}

application {
    mainClass = "com.example.Main"
    mainModule = "com.example"
}

src/main/java/module-info.java

module com.example {
    requires java.base;
    requires com.azure.identity;

    requires msal4j.persistence.extension; // 手动添加的依赖声明

    exports com.example;
}

Gradle依赖树片段

+--- com.azure:azure-identity -> 1.13.3
.
.
.
|    +--- com.microsoft.azure:msal4j-persistence-extension:1.3.0
|    |    +--- com.microsoft.azure:msal4j:1.15.0 -> 1.17.1 (*)
|    |    +--- net.java.dev.jna:jna:5.13.0
|    |    +--- net.java.dev.jna:jna-platform:5.13.0
|    |    |    \--- net.java.dev.jna:jna:5.13.0
|    |    \--- org.slf4j:slf4j-api:1.7.7 -> 1.7.36
|    \--- net.java.dev.jna:jna-platform:5.6.0 -> 5.13.0 (*)
+--- com.azure:azure-core -> 1.52.0 (*)
\--- com.microsoft.azure:msal4j-persistence-extension:1.3.0 (*)

解决方案

1. 启用Gradle模块路径自动推断

在build.gradle.kts中添加配置,让Gradle自动处理模块路径:

java {
    modularity.inferModulePath.set(true)
}

2. 统一依赖版本

当前依赖树中msal4j版本为1.17.1,但msal4j-persistence-extension为1.3.0,版本不匹配可能引发识别问题,修改依赖为同版本:

implementation("com.microsoft.azure:msal4j-persistence-extension:1.17.1")

3. 手动指定编译模块路径

若上述方法无效,可在build.gradle.kts中为编译任务显式指定模块路径:

tasks.compileJava {
    options.compilerArgs.addAll(listOf(
        "--module-path", configurations.compileClasspath.asPath
    ))
}

4. 移除显式依赖声明(仅内部依赖场景)

若你的代码未直接调用msal4j.persistence.extension的API,仅Azure Identity内部依赖它,可移除module-info.java中的requires msal4j.persistence.extension;,并确保运行时依赖存在:

dependencies {
    implementation("com.azure:azure-identity")
    runtimeOnly("com.microsoft.azure:msal4j-persistence-extension:1.17.1")
}

内容的提问来源于stack exchange,提问作者snorm

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 21:04:51