Loj*_*Ibg 1 module java-platform-module-system java-9 java-module
我想在我的应用程序中使用Java 9。我的一个依赖项有一个jar名称:
sdk-http-ahc-2_0
Run Code Online (Sandbox Code Playgroud)
不幸的是,当我尝试将其更改为自动模块时,该模块的名称无效。
requires sdk.http.ahc.2_0; // not valid
Run Code Online (Sandbox Code Playgroud)
我在命名模块时缺少什么吗?我在这里还有其他选择吗?
问题在于模块系统无法识别2_0为版本号,因此在确定自动模块名称时不会剥离它。不幸的是,2_0它不是有效的Java标识符,因此不能用作模块名称中的段。
解决方案是重命名JAR或将Automatic-Module-Name条目添加到JAR的清单中:
创建一个manifest.txt具有以下内容的文件:
Automatic-Module-Name: sdk.http.ahc
Run Code Online (Sandbox Code Playgroud)然后使用jar将该行追加到现有清单中:
jar --update --file sdk-http-ahc-2_0.jar --manifest=manifest.txt
Run Code Online (Sandbox Code Playgroud)请注意,在本地修改现有的JAR(名称或清单)可能会导致问题。考虑将文件的Maven版本更改为类似2.0-patched-auto-name(或类似名称)并将其添加到本地Maven存储库中。如果该项目与其他开发人员共享,并且您具有本地Nexus,则可以将其放入其中。否则,将邮件发送给所有人,并提供将其添加到其本地仓库中的步骤。
| 归档时间: |
|
| 查看次数: |
605 次 |
| 最近记录: |