我想在我的应用程序中使用 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 的 list 中:
创建一个文件
manifest.txt
,内容如下:Automatic-Module-Name: sdk.http.ahc
然后使用
jar
将该行附加到现有 list 中:jar --update --file sdk-http-ahc-2_0.jar --manifest=manifest.txt
请注意,在本地修改现有 JAR(名称或 list )可能会导致问题。考虑将文件的 Maven 版本更改为 2.0-patched-auto-name
(或类似的),并将其添加到本地 Maven 存储库。如果项目与其他开发人员共享,并且您有本地 Nexus,则可以将其放入其中。否则,向每个人发送一封邮件,其中包含将其添加到本地存储库的步骤。 😜
关于java - 自动包含数字的模块名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48714633/