我想在我的应用中使用Java 9。我的一个依赖项有一个jar名称:
sdk-http-ahc-2_0
不幸的是,当我尝试将其更改为自动模块时,模块的名称无效。
requires sdk.http.ahc.2_0; // not valid
我是否遗漏了命名模块的内容?我的其他选择是什么?
答案 0 :(得分:5)
问题是模块系统没有将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,则可以将其放在那里。否则,向每个人发送邮件,并将步骤添加到本地仓库。