JDK9 中有哪些预定义模块或者我需要哪个模块来修复依赖问题?
What are the predefined modules in JDK9 or Which module do I need to fix dependency problems?
JDK9 将(可能)引入模块系统。作为其中的一部分,Java Class 库将被模块化。
当找不到 classes 时,这可能会导致异常,因为它们位于尚未指定为依赖项的模块中。
将使用模块系统创建的模块是什么?它们各自的内容是什么?
或换句话说:给定一个未加载的 class,我如何找到合适的模块作为依赖包含?
完整的模块列表可在此处获得。 http://cr.openjdk.java.net/~mr/jigsaw/ea/module-summary.html
它列出了构成 Java Class 库的 73 个模块。对于每一个,都有一个包含的包列表和它所依赖的其他模块列表。
给定一个未加载的 class 可以在该站点上搜索包名称的开头,以确定要依赖的模块。
how do I find the proper module to include as a dependency?
考虑这个恶搞 class:
import java.sql.DriverManager;
import java.rmi.RemoteException;
public class UserDao {
DriverManager driverManager = null;
public void service() throws RemoteException {
if (true) {
throw new RemoteException();
}
}
}
假设这个class被编译成user-dao.jar
。 jdeps工具就是答案(使用9ea170):
jdeps --list-deps user-dao.jar
java.base
java.rmi
java.sql
(请注意 jdeps
随 JDK 8 一起提供,但在 JDK 9 中更合适。)
为了完整起见,如果您知道代码使用特定的 class(例如 java.sql.DriverManager
)并且您怀疑需要一个模块(例如 java.sql
),则可以确认通过 the doc 或命令行(同样是 9ea170)的模块:
bash$ java --describe-module java.sql
java.sql@9-ea
exports java.sql
exports javax.sql
exports javax.transaction.xa
requires java.xml transitive
requires java.base mandated
requires java.logging transitive
uses java.sql.Driver
JDK9 将(可能)引入模块系统。作为其中的一部分,Java Class 库将被模块化。
当找不到 classes 时,这可能会导致异常,因为它们位于尚未指定为依赖项的模块中。
将使用模块系统创建的模块是什么?它们各自的内容是什么?
或换句话说:给定一个未加载的 class,我如何找到合适的模块作为依赖包含?
完整的模块列表可在此处获得。 http://cr.openjdk.java.net/~mr/jigsaw/ea/module-summary.html
它列出了构成 Java Class 库的 73 个模块。对于每一个,都有一个包含的包列表和它所依赖的其他模块列表。
给定一个未加载的 class 可以在该站点上搜索包名称的开头,以确定要依赖的模块。
how do I find the proper module to include as a dependency?
考虑这个恶搞 class:
import java.sql.DriverManager;
import java.rmi.RemoteException;
public class UserDao {
DriverManager driverManager = null;
public void service() throws RemoteException {
if (true) {
throw new RemoteException();
}
}
}
假设这个class被编译成user-dao.jar
。 jdeps工具就是答案(使用9ea170):
jdeps --list-deps user-dao.jar
java.base
java.rmi
java.sql
(请注意 jdeps
随 JDK 8 一起提供,但在 JDK 9 中更合适。)
为了完整起见,如果您知道代码使用特定的 class(例如 java.sql.DriverManager
)并且您怀疑需要一个模块(例如 java.sql
),则可以确认通过 the doc 或命令行(同样是 9ea170)的模块:
bash$ java --describe-module java.sql
java.sql@9-ea
exports java.sql
exports javax.sql
exports javax.transaction.xa
requires java.xml transitive
requires java.base mandated
requires java.logging transitive
uses java.sql.Driver