我正在回答this问题,我建议使用exports to
语法来阻止外部消费者访问模块之间内部使用的代码。
但是在进一步思考时,模块实现的唯一真正的安全检查是它与名称匹配。考虑这个我正在实现两个模块的例子:
module a {
exports unsafe to b
}
module b {
requires a
}
包unsafe
包含暴露不安全的代码。有没有办法安全将其导出到内部模块而不将其暴露在外部?
在上面的例子中,一个流氓实体可以简单地命名他们的模块b
并获得对代码的访问权限(不安全)。 JLS似乎并没有拼出任何可以阻止它的内容。
答案 0 :(得分:5)
模块的散列为pointed by Alan,适用于您的情况。虽然我个人喜欢JMOD
tool中直接回答您问题的说明和示例:
使用
--hash-modules
选项或jmod
哈希命令,您可以在 每个模块的描述符,记录模块内容的哈希值 允许依赖它,因此 "将 捆绑在一起 模块。这使您可以允许将包导出到一个或 更具体命名的模块,没有其他人通过合格 出口。运行时验证模块的记录散列是否匹配 在运行时解决的那个;如果没有,运行时将返回错误。