2016-05-31 16 views
20

Java 9モジュールシステムを見始めたばかりで、クラ​​スがどのモジュールにあるかを知ることができるかどうかは疑問でした。メソッドgetModuleが名前付きモジュールのクラスの名前のないモジュールを返す

そのため私は、次のモジュールに

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

を作成し、パッケージde.test

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

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

のように見えるのjarファイルをコンパイルし、私は

を呼んでいる Overviewと呼ばれるクラスを持っています
Module module = Overview.class.getModule(); 

ただし、返されたモジュールオブジェクトの名前は無く、ModuleDescriptorはありません。

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

私はOS X上でJDK 9ビルド120を使用してい

+1

WOW、Java9はStiftung Warentest [:-)によってテストされています –

答えて

17

java --class-path ...付き)クラスパス上のすべてのJARを束ねます同じかかわらず、彼らは「本物モジュール」であるかどうかの、unnamed moduleいわゆる「JARだけ」と呼ばれます。そのようなJARのクラスにそのモジュールを尋ねると、あなたが記述した結果が得られます。

JARをモジュールパス(java --module-path ...)に入れて、Class::getModuleを入れてみてください。

+3

ありがとう、それはあなたの説明どおりに動作しました。しかし私にとっては、Class :: getModuleはクラスの実行方法に応じて異なる動作をすることが直感的ではないようです。 –

関連する問題