2017-09-20 16 views
3

例えば、私はsomefile-0.1.jar JPMモジュールを含むjarファイルを持っています。また、私はこのモジュールに参照Module somemoduleを持っています。Java 9でモジュールごとjarファイル名を取得する方法は?

モジュールでjarファイル名を取得する方法(somemodule参照)?私はModule APIを調べましたが、それを行う方法が見つかりませんでした。

+0

'somefile-0.1.jar'がクラスパスまたはモジュールパスで使用されることを明確にすることはできますか? – nullpointer

+0

@nullpointerモジュールパス。もちろん、両方のパスをサポートしているのは良いことでしょう。 –

+0

モジュールパス上に 'module.getResourceAsStream(" module-info.class ")'のヘルプはありますか? – nullpointer

答えて

6

モジュラーJARからモジュールがロードされたという保証はありません。いずれにせよ、これはあなたが探しているものに近いと思う:

Module m = ... 
ModuleLayer layer = m.getLayer(); 
if (layer != null) { 
    ModuleReference mref = layer.configuration() 
      .findModule(m.getName()) 
      .map(ResolvedModule::reference) 
      .orElseThrow(() -> new RuntimeException("should not happen")); 
} 
+0

レイヤーはいつnullになりますか?なぜヌルチェックがありますか? – nullpointer

+3

@nullpointer 'Module#getLayer'のドキュメント:このモジュールを含むモジュール層を返します。このモジュールがモジュール層にない場合はnullを返します。モジュール層には名前付きモジュールが含まれているため、名前のないモジュール ダイナミックモジュールは実行時に生成されるモジュールと呼ばれ、ダイナミックモジュールはモジュールレイヤ内にある場合とそうでない場合があります。 –

関連する問題