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

Gradle Kotlin DSL下Java11项目sun.rmi.registry包编译错误如何解决

问题根因

你当前在编译参数中仅配置了java.rmi/sun.rmi.server和jdk.management.agent/jdk.internal.agent两个包的导出权限,但代码中引用的是java.rmi模块下的sun.rmi.registry包,没有在编译参数中声明该包对未命名模块的导出权限,因此触发编译错误。

配置调整方案

修改build.gradle.kts中JavaCompile任务的编译参数,新增sun.rmi.registry包的导出规则即可,调整后的相关配置如下:

tasks.withType<JavaCompile> {
    val compilerArgs = options.compilerArgs
    compilerArgs.addAll(
        listOf(
            "--add-exports", "java.rmi/sun.rmi.server=ALL-UNNAMED",
            "--add-exports", "java.rmi/sun.rmi.registry=ALL-UNNAMED", // 新增对应包的导出配置
            "--add-exports", "jdk.management.agent/jdk.internal.agent=ALL-UNNAMED"
        )
    )
}

额外注意事项

如果运行代码、执行单元测试时也用到了这些JDK内部API,需要同步给对应任务添加JVM启动参数,避免运行时报错,配置示例如下:

// 单元测试任务添加JVM参数
tasks.withType<Test> {
    jvmArgs.addAll(
        listOf(
            "--add-exports", "java.rmi/sun.rmi.server=ALL-UNNAMED",
            "--add-exports", "java.rmi/sun.rmi.registry=ALL-UNNAMED",
            "--add-exports", "jdk.management.agent/jdk.internal.agent=ALL-UNNAMED"
        )
    )
}

// 如果是可执行应用,run任务也需要添加对应参数
tasks.named<JavaExec>("run") {
    jvmArgs.addAll(
        listOf(
            "--add-exports", "java.rmi/sun.rmi.server=ALL-UNNAMED",
            "--add-exports", "java.rmi/sun.rmi.registry=ALL-UNNAMED",
            "--add-exports", "jdk.management.agent/jdk.internal.agent=ALL-UNNAMED"
        )
    )
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 21:09:03