20

私はJava 9モジュールシステムを見始めたばかりで、クラ​​スがどのモジュールにあるかを知ることができるかどうか疑問に思っていました.

そのため、次のモジュールを作成しました

module de.test {
  exports de.test.myexport;
}

次のようなjarファイルをコンパイルしました

> jar --print-module-descriptor --file=Java9Test-1.0-SNAPSHOT.jar                                

de.test
  requires mandated java.base
  exports de.test.myexport

packageには、呼び出している場所とde.test呼ばれるクラスがありますOverview

Module module = Overview.class.getModule();

ただし、返されたモジュール オブジェクトには名前がなく、ModuleDescriptor.

ここで正しく使用getModule()していますか、またはクラスのモジュールをロードする他の方法はありますか?

OS XでJDK 9ビルド120を使用しています。

4

1 に答える 1

17

クラスパス ( を含む) 上のすべての JAR は、それらが「実際のモジュール」であるか「単なる JAR」であるかに関係なくjava --class-path ...、同じいわゆる名前のないモジュールにバンドルされます。そのような JAR からクラスにそのモジュールを要求すると、記述した結果が得られます。

JAR をモジュール パス (を使用java --module-path ...)に配置してみてくださいClass::getModule。期待どおりの結果が返されるはずです。

于 2016-06-01T13:19:09.637 に答える