首页 > 解决方案 > 使类公开,但对 JAR 文件保持私有

问题描述

有没有办法让 Java 类公开,但只能通过 JAR 文件公开?AKA,它不是包私有,而是包公共,但它不是 JAR 公开的?

假设我有这样的结构:

project/
  package1/
    One.java
  package2/
    Two.java
  package3/
    Three.java

由于 3 个 .java 文件位于不同的包中,因此我需要将其公开。但是有没有办法让它们只对包含项目的 JAR 公开?这样如果另一个项目导入 JAR,它就看不到某些公共类/字段?

标签: javamavenjava-11java-platform-module-system

解决方案


使用Java 9 中的Jigsaw项目,您可以完全按照您可以决定要导出的包的方式执行此操作。例如:

module com.yourproject {
  exports com.yourproject.package1;
}

这将确保仅package1导出。


推荐阅读