无法为 Java 9 中自动生成的模块名称派生模块描述符
使用 Java 9 时,尝试时可能会遇到错误使用包含保留关键字(例如“native”)的自动生成的模块名称添加依赖项。出现此错误的原因是 Java 9 模块名称必须遵循特定的命名约定,并且“native”不是有效的 Java 标识符。
解决此问题的一种方法是通过添加“META-INF”来修改依赖项的 JAR 文件/MANIFEST.MF”文件,具有“Automatic-Module-Name”属性。此属性指定 JAR 转换为自动模块时要使用的模块名称。
例如:
<dependency> <groupId>io.netty</groupId> <artifactId>netty-transport-native-epoll</artifactId> <version>${netty.version}</version> <classifier>${epoll.os}</classifier> </dependency> // Add a manifest file to the dependency's JAR: <manifestEntries> <Automatic-Module-Name>netty.transport.epoll</Automatic-Module-Name> </manifestEntries>
或者,工件所有者可以使用“将模块声明添加到其 JAR” module-info.java”文件。这些声明显式定义了模块名称及其依赖项,这可以帮助解决无效模块名称的问题。然而,这种方法需要与受影响的库的所有者合作。
根据 Java 模块系统规范,模块名称应遵循以下命名约定:
请记住,在 Java 9 中使用下划线可能会很棘手,因为它们被视为关键字。因此,避免使用“native”或“default”作为模块名称或包名称。
以上是如何使用自动生成的模块名称解决 Java 9 中的'无法派生模块描述符”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!