同一个包的类可以分布在多个Jar文件中吗?

我正在使用JAR文件中的一些类,它们属于一个包(com.abc.xyz)。

我写的类也属于该包,但我无法将我的文件捆绑到该JAR文件中。 是否可以将属于同一个包的类分布在多个JAR文件中?

默认情况下,绝对。

但是,如果确保仅从一个jar文件加载特定包中的类,则可以将该信息添加到清单中 。

除非JAR 密封了包装,否则这是非常可行的。

我不明白为什么不可能。 重要的是类在类路径中。

这可能不是你想要做的事情。 如果它在同一个包装中,它是否应该打包在一起(我相信Jigsaw打算允许在模块之间拆分包装,但这是一个不同的水壶)。

如果任何一个包在清单中标记为密封,则可以阻止它。 我建议将整个jar子标记为密封的。

如果类上有不同的签名者,并且类由同一个类加载器加载,也可以阻止它。

如果使用不同的类加载器加载类,虽然“命名空间”将是相同的,但实际上您不会获得包(以及受保护的相关部分)访问。

有时你必须这样做,如果你想扩展第三方库的function,但它们不是开放的和/或你没有来源