无法在 Java 9 中为自动生成的模块名称派生模块描述符?
在 Java 9 中,使用为包含保留关键字(例如“native”)的依赖项自动生成的模块名称。这可能会导致“找不到模块”之类的错误。
理解问题
Java 9 引入了模块的概念,它允许封装和隔离代码。模块具有必须遵守 Java 标识符规则的唯一名称。但是,某些关键字(例如“native”)不能用作模块名称的一部分。
可能的解决方法
1.使用自动模块名称清单条目
一种解决方案是将“自动模块名称”清单条目添加到有问题的依赖项的 JAR 文件中。此条目指定工件的自定义模块名称,覆盖自动生成的名称。例如,您可以修改 Netty Epoll 依赖项的清单文件以包含:
<Automatic-Module-Name>netty.transport.epoll</Automatic-Module-Name>
2。将模块声明添加到 JAR
工件所有者还可以使用“module-info.java”文件将模块声明添加到其 JAR 中。这显式定义了模块名称,确保与 Java 9 的模块系统兼容。
替代命名约定
根据 Java 规范,模块名称必须是有效的包名称。为了适应依赖项的 Internet 域名无法转换为有效包名称的情况,建议采用以下约定:
但是请注意,由于其作为关键字的地位,在 Java 9 中不鼓励在模块名称中使用下划线。
以上是如何解决 Java 9 中自动生成模块名称的'无法派生模块描述符”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!