java - 如何在 Java9 模块中使用 3rd 方库?

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

我有一些使用非 Java9 模块的第 3 方库的 java9 模块,只是一个简单的实用程序 jar。

但是,编译器提示它无法从我的实用程序中找到包。

我应该在 module-info.java 中做什么才能启用我的第 3 方库?

最佳答案

您可以将您的库用作自动模块。自动模块是没有模块描述符(即 module-info.class)的模块。

但是您需要指定什么名称来引用自动模块?自动模块的名称源自 JAR 名称(除非此 JAR 包含 Automatic-Module-Name 属性)。完整的规则很长(请参阅 Javadoc 中的 ModuleFinder.of),因此为简单起见,您只需从其名称中删除版本,然后将所有非字母数字字符替换为点 (.)。

例如,如果你想使用foo-bar-1.2.3-SNAPSHOT.jar,你需要在module-info.java中添加如下行:

module <name> {
    requires foo.bar;
}

关于java - 如何在 Java9 模块中使用 3rd 方库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46713289/

相关文章:

Java 9 : jigsaw and hibernate 5. 2.12 不工作

java - 模块化网络应用

Maven 多模块按功能但共享 webapp

java - 我可以将函数名称存储在最终的 HashMap 中以供执行吗?

Java:如何将字符串转换为子类数据类型?

java - 与移动障碍物的碰撞响应(2D)

java - JDK 9 的 JCE zip 文件

java - 构造函数中的两个 "volatile"变量是否遵循Happens-before关系?

java - 为什么我的 Java 9 模块服务没有注册其实现?

javascript - ReactJS:如何更模块化地使用对象的 Prop 类型和形状?