JDK9將(可能)引入一個模塊系統。作爲其中的一部分,Java類庫將被模塊化。什麼是JDK9中的預定義模塊或需要哪個模塊來修復依賴關係問題?
當類未找到時,可能會導致異常,因爲它們位於尚未指定爲依賴項的模塊中。
將使用模塊系統創建哪些模塊以及它們各自的內容是什麼?
或者換個說法:給定一個沒有加載的類,如何找到合適的模塊作爲依賴包含?
JDK9將(可能)引入一個模塊系統。作爲其中的一部分,Java類庫將被模塊化。什麼是JDK9中的預定義模塊或需要哪個模塊來修復依賴關係問題?
當類未找到時,可能會導致異常,因爲它們位於尚未指定爲依賴項的模塊中。
將使用模塊系統創建哪些模塊以及它們各自的內容是什麼?
或者換個說法:給定一個沒有加載的類,如何找到合適的模塊作爲依賴包含?
如何找到合適的模塊作爲依賴包含?
考慮這個惡搞類:
import java.sql.DriverManager;
import java.rmi.RemoteException;
public class UserDao {
DriverManager driverManager = null;
public void service() throws RemoteException {
if (true) {
throw new RemoteException();
}
}
}
讓我們假設這個類被編譯成user-dao.jar
。該jdeps工具(使用9ea170)答案:
jdeps --list-deps user-dao.jar
java.base
java.rmi
java.sql
(請注意,隨JDK 8 jdeps
,但更適合在JDK 9)
爲了完整起見,如果你知道這些代碼的用途一個特定的類別(例如java.sql.DriverManager
),你懷疑一個模塊需要(如java.sql
),人們可以通過the doc確認的模塊,或者在命令行(與9ea170再次):
bash$ java --describe-module java.sql
[email protected]
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
謝謝。更新了鏈接。 –
模塊的完整列表可以在這裏找到。 http://cr.openjdk.java.net/~mr/jigsaw/ea/module-summary.html
它列出了構成Java類庫的73個模塊。對於每一個,都有一個包含的軟件包列表以及它依賴的其他模塊列表。
給定一個未加載的類,可以搜索該站點上的包名稱的開始,以確定要依賴的模塊。
'jdeps --list -deps' – ZhekaKozlov
我會注意到,您在標題中提出了多個問題,第一個問題是無關緊要的問題(根據[導覽](https://stackoverflow.com/tour)),因爲它是一個列表請求東西的。 –