Jen*_*der 3 java java-platform-module-system java-9 java-module
JDK9将(可能)引入一个模块系统.作为其中的一部分,Java类库将被模块化.
当找不到类时,这会导致异常,因为它们位于未指定为依赖项的模块中.
将使用模块系统创建哪些模块以及它们各自的内容是什么?
或者说不同:给定一个没有加载的类,我如何找到适当的模块作为依赖项?
如何找到合适的模块作为依赖项?
考虑这个恶搞类:
import java.sql.DriverManager;
import java.rmi.RemoteException;
public class UserDao {
DriverManager driverManager = null;
public void service() throws RemoteException {
if (true) {
throw new RemoteException();
}
}
}
Run Code Online (Sandbox Code Playgroud)
我们假设这个类被编译成user-dao.jar.jdeps工具就是答案(使用9ea170):
jdeps --list-deps user-dao.jar
java.base
java.rmi
java.sql
Run Code Online (Sandbox Code Playgroud)
(注意jdepsJDK 8附带,但在JDK 9中更合适.)
为了完整性,如果您知道代码使用特定类(例如java.sql.DriverManager)并且您怀疑需要模块(例如java.sql),则可以通过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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
749 次 |
| 最近记录: |