2017-06-16 3 views
3

JDK9はおそらくモジュールシステムを導入する予定です。その一環として、Javaクラスライブラリはモジュール化されます。JDK9で定義済みのモジュールとは何か、または依存関係の問題を解決するためにどのモジュールを使用する必要がありますか?

これは、依存関係としてまだ指定されていないモジュール内にあるため、クラスが見つからない場合に例外につながる可能性があります。

モジュールシステムで作成されるモジュールとそのコンテンツは何ですか?

別の言い方をすると、ロードされないクラスがある場合、依存関係として含める適切なモジュールを見つけるにはどうすればよいですか?

+4

'jdeps --list -deps' – ZhekaKozlov

+1

私はタイトルの中で複数の質問をしていることに注意しましょう。最初の質問は、トピックのものです([ツアー](https://stackoverflow.com/tour)に従って)。物事の –

答えて

6

依存関係として含める適切なモジュールを見つけるにはどうすればよいですか?

は、このパロディークラスを考えてみましょう:

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 --list-deps user-dao.jar 
    java.base 
    java.rmi 
    java.sql 

jdepsはJDK 8に同梱さが、はるかに適切なJDK 9であることに注意してください)

完全性のために:jdepsツールは、(9ea170を使用して)答えです特定のクラス(例えば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 
+1

ありがとうございます。リンクを更新しました。 –

2

モジュールの完全なリストはここにあります。 http://cr.openjdk.java.net/~mr/jigsaw/ea/module-summary.html

これは、Javaクラスライブラリを構成する73のモジュールをリストしています。それぞれには、含まれるパッケージのリストとそれが依存する他のモジュールのリストがあります。

ロードされないクラスがあると、依存するモジュールを決定するために、そのサイトのパッケージ名の先頭を検索できます。

関連する問題