java - 自动包含数字的模块名称

标签 java module java-9 java-module java-platform-module-system

我想在我的应用程序中使用 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 中:

  1. 创建一个文件manifest.txt,内容如下:

    Automatic-Module-Name: sdk.http.ahc
    
  2. 然后使用 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/

相关文章:

java - 从坐标创建椭圆曲线点对象

Java:使用 Try/Catch Exception 检查用户输入是否为 Double

spring - 使用 Java 10 的 Gradle(即使未导出包,Spring 也能够扫描模块类)

java - 为什么 System.out.println() 在 ASCII 码零处终止

java - 为什么 AnnotationMetadata 基于 ASM 而不是 Java Reflection

php - heroku 上的 Imagick - 这可能吗?

ruby - 如何根据每个请求重新加载/lib 中的文件?

python - 在没有 Pip 或 setup.py 的 Ubuntu 16.04 上安装 Python 模块 easygui

java - 在jshell中查看类路径

Java 9 takeWhile 和 dropWhile 读取和跳过某些行