使类公开,但对JAR文件保持私有

Ale*_*lls 7 java maven java-platform-module-system java-11

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

说我有这样的结构:

project/
  package1/
    One.java
  package2/
    Two.java
  package3/
    Three.java
Run Code Online (Sandbox Code Playgroud)

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

Sle*_*idi 8

使用Java 9中的项目Jigsaw,您可以完全确定要导出的程序包.例如:

module com.yourproject {
  exports com.yourproject.package1;
}
Run Code Online (Sandbox Code Playgroud)

这将确保仅package1导出.


小智 2

是的,Java 9 引入了旨在解决此类问题的模块。