首页 > Java > java教程 > 正文

如何使用自动生成的模块名称解决 Java 9 中的'无法派生模块描述符”错误?

Susan Sarandon
发布: 2024-11-25 03:05:18
原创
980 人浏览过

How to Resolve

无法为 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 标识符
  • 如果遵循相同的命名规则,包名称可以用作模块名称,但域名有某些例外。
  • 如果域名包含特殊字符或关键字,则应该是转换为下划线或附加下划线。
  • 模块名称中不允许使用前导数字,可以使用下划线作为前缀以避免this.

请记住,在 Java 9 中使用下划线可能会很棘手,因为它们被视为关键字。因此,避免使用“native”或“default”作为模块名称或包名称。

以上是如何使用自动生成的模块名称解决 Java 9 中的'无法派生模块描述符”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板