无法解决 Java 9 中自动生成名称的模块依赖关系?
当与自动生成的模块存在依赖关系时,会出现此问题name 包含关键字“native”,该关键字在 Java 9 中保留。因此,无法将其作为依赖项添加到模块中
解决方案:
要解决此问题,可以考虑两种主要方法:
添加自动模块名称属性:
工件所有者可以打包一个META-INF/MANIFEST.MF 文件,其中包含指定 Automatic-Module-Name 属性的工件。该属性定义模块描述符要使用的模块名称。通过将 Automatic-Module-Name 设置为有效名称(不包括“native”),可以解决问题。
将模块声明添加到JAR:
工件所有者可以使用以下方式添加模块声明module-info.java 到他们的 JAR 文件。这允许他们显式指定模块名称,从而避免自动生成的名称。然而,这种方法需要逐步迁移,因为库和框架自下而上地采用它。
模块描述符规范:
根据Java 9 模块声明规范,模块名称由一个或多个以句点分隔的 Java 标识符组成。这意味着模块名称必须遵守以下规则:
Java 9 中下划线的注意事项:
虽然通常允许下划线作为模块名称的一部分,但请务必注意下划线现在是 Java 9 中的关键字。因此,必须避免包含下划线作为初始字符的标识符。例如:
int _native; // Works fine int _; // Causes an error in Java 9
以上是如何解决自动生成的名称包含保留关键字的 Java 9 模块依赖性问题?的详细内容。更多信息请关注PHP中文网其他相关文章!