我有一些使用第三方库的Java9模块,该库不是Java9模块,而只是一个简单的工具jar文件。
然而,编译器抱怨无法找到我的工具程序包中的一个包。
在module-info.java
中我应该怎么做才能启用对我第三方库的使用?
我有一些使用第三方库的Java9模块,该库不是Java9模块,而只是一个简单的工具jar文件。
然而,编译器抱怨无法找到我的工具程序包中的一个包。
在module-info.java
中我应该怎么做才能启用对我第三方库的使用?
你可以将你的库用作“自动模块”(automatic module)。自动模块是没有模块描述符(即 module-info.class
)的模块。
但是,指定自动模块的名称时需要什么名称呢?除非该 JAR 包含一个 Automatic-Module-Name
属性,否则自动模块的名称是从 JAR 的名称派生而来。完整的规则相当冗长(请参阅 Javadoc 文档中的 ModuleFinder.of
),因此,简单起见,您只需删除其名称中的版本,然后将所有非字母数字字符替换为点号(.
)。
例如,如果您想要使用 foo-bar-1.2.3-SNAPSHOT.jar
,您需要将以下行添加到 module-info.java
:
module <name> {
requires foo.bar;
}