2016-05-31 9 views
20

Sadece Java 9 modül sistemine bakmaya başladım ve bir sınıfın hangi modülde bulunduğunu bilmesinin mümkün olup olmadığını merak ettim. Yöntem getModule, adlandırılmış modülde sınıf için adlandırılmamış modül döndürüyor

Therefor

aşağıdaki modülü

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

oluşturulan ve ben

arıyorum nereye paketinde de.test yılında

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

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

gibi, ben Overview bir sınıf çağrıda görünen bir kavanoz dosyası derlenmiş

Module module = Overview.class.getModule(); 

Ancak, döndürülen modül nesnesi adlandırılmamış ve ModuleDescriptor.

getModule() numaralı telefonu burada mı kullandım ya da bir sınıfın modülünü yüklemek için başka bir yol var mı?

Ben OS X'te JDK 9 yapı 120 kullanıyorum

+1

WOW, Java9 Stiftung Warentest tarafından test ediliyor [:-) –

cevap

17

(java --class-path ... birlikte) sınıf yolunda tüm kavanozları içine paketlenmiş olsun aynı bakmaksızın "gerçek modül" olup olmadığı, unnamed module sözde veya "sadece bir JAR". Modülü için böyle bir JAR'dan bir sınıf sorduğunuzda, açıkladığınız sonucu elde edersiniz.

JAR'ı modül yoluna (java --module-path ... ile) koymaya ve Class::getModule beklediğiniz şeyi geri vermeyi deneyin.

+3

Teşekkürler, tam olarak açıkladığınız gibi çalıştı. Ancak bana göre, sınıfın nasıl yürütüldüğüne bağlı olarak, Class :: getModule’ın farklı davrandığı sezgisel değil. –

İlgili konular