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

纯Kotlin项目能否使用Java 9模块系统(Jigsaw)?

Kotlin中能否使用Java 9 Jigsaw模块系统?

完全可以。Kotlin从1.2版本起就正式支持Java 9的Jigsaw模块系统,纯Kotlin项目也能借助它实现跨模块的功能隐藏,减少对internal修饰符的依赖。

以下是关键的使用要点和注意事项:

  • 基础配置

    1. 为每个Kotlin模块创建module-info.java文件(目前Kotlin不支持用.kt编写模块声明),示例如下:
      module com.example.mykotlinmodule {
          // 对外暴露的公开API包
          exports com.example.public.api;
          // 依赖Kotlin标准库模块
          requires kotlin.stdlib;
          // 如果需要依赖其他模块,添加对应的requires声明
          requires com.example.anothermodule;
      }
      
    2. 配置构建工具(Gradle/Maven):设置Java版本为9及以上,并启用模块系统。比如在Gradle中:
      java {
          sourceCompatibility = JavaVersion.VERSION_11 // 或更高版本
          targetCompatibility = JavaVersion.VERSION_11
      }
      
  • 与Kotlin可见性的配合

    • Jigsaw的模块导出规则可以替代部分internal的使用场景:只要不把内部功能所在的包通过exports声明导出,其他模块就无法访问这些包中的任何成员,不管它是public还是internal。
    • 模块内部的代码依然可以使用internal来控制模块内的可见性,这和Jigsaw的模块控制是互补关系,互不冲突。private/fileprivate这类更细粒度的可见性修饰符也能正常使用。
  • 需要注意的细节

    • 必须使用module-info.java,不能用Kotlin编写模块声明文件,这是当前官方的限制。
    • 确保依赖的库(包括Kotlin标准库)支持模块化:Kotlin标准库从1.2版本开始已经提供了模块化的jar包,无需额外配置。
    • 构建时要使用模块路径(module path)而非传统的类路径(class path),主流构建工具会在配置好Java版本后自动处理这一点。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 05:07:13