包含数字的自动模块名称
Automatic module name containing number
我想在我的应用程序中使用 Java 9。我的依赖项之一有一个 jar 名称:
sdk-http-ahc-2_0
不幸的是,当我尝试将其更改为自动模块时,模块名称无效。
requires sdk.http.ahc.2_0; // not valid
我是否遗漏了命名模块的内容?我还有哪些其他选择?
问题是模块系统不会将 2_0
识别为版本号,因此在确定自动模块名称时不会删除它。不幸的是,2_0
不是有效的 Java 标识符,因此不能用作模块名称中的段。
解决方案是重命名 JAR 或将 Automatic-Module-Name
条目添加到 JAR 的清单中:
创建文件manifest.txt
,内容如下:
Automatic-Module-Name: sdk.http.ahc
然后使用 jar
将该行附加到现有清单:
jar --update --file sdk-http-ahc-2_0.jar --manifest=manifest.txt
请注意,在本地修改现有 JAR(名称或清单)可能会导致问题。考虑将文件的 Maven 版本更改为 2.0-patched-auto-name
(或类似)之类的版本,并将其添加到本地 Maven 存储库。如果该项目与其他开发人员共享并且您有本地 Nexus,则可以将其放在那里。否则,请向所有人发送一封邮件,说明将其添加到本地仓库的步骤。
我想在我的应用程序中使用 Java 9。我的依赖项之一有一个 jar 名称:
sdk-http-ahc-2_0
不幸的是,当我尝试将其更改为自动模块时,模块名称无效。
requires sdk.http.ahc.2_0; // not valid
我是否遗漏了命名模块的内容?我还有哪些其他选择?
问题是模块系统不会将 2_0
识别为版本号,因此在确定自动模块名称时不会删除它。不幸的是,2_0
不是有效的 Java 标识符,因此不能用作模块名称中的段。
解决方案是重命名 JAR 或将 Automatic-Module-Name
条目添加到 JAR 的清单中:
创建文件
manifest.txt
,内容如下:Automatic-Module-Name: sdk.http.ahc
然后使用
jar
将该行附加到现有清单:jar --update --file sdk-http-ahc-2_0.jar --manifest=manifest.txt
请注意,在本地修改现有 JAR(名称或清单)可能会导致问题。考虑将文件的 Maven 版本更改为 2.0-patched-auto-name
(或类似)之类的版本,并将其添加到本地 Maven 存储库。如果该项目与其他开发人员共享并且您有本地 Nexus,则可以将其放在那里。否则,请向所有人发送一封邮件,说明将其添加到本地仓库的步骤。