例えば、私はsomefile-0.1.jar
JPMモジュールを含むjarファイルを持っています。また、私はこのモジュールに参照Module somemodule
を持っています。Java 9でモジュールごとjarファイル名を取得する方法は?
モジュールでjarファイル名を取得する方法(somemodule
参照)?私はModule APIを調べましたが、それを行う方法が見つかりませんでした。
例えば、私はsomefile-0.1.jar
JPMモジュールを含むjarファイルを持っています。また、私はこのモジュールに参照Module somemodule
を持っています。Java 9でモジュールごとjarファイル名を取得する方法は?
モジュールでjarファイル名を取得する方法(somemodule
参照)?私はModule APIを調べましたが、それを行う方法が見つかりませんでした。
モジュラー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"));
}
レイヤーはいつnullになりますか?なぜヌルチェックがありますか? – nullpointer
@nullpointer 'Module#getLayer'のドキュメント:このモジュールを含むモジュール層を返します。このモジュールがモジュール層にない場合はnullを返します。モジュール層には名前付きモジュールが含まれているため、名前のないモジュール ダイナミックモジュールは実行時に生成されるモジュールと呼ばれ、ダイナミックモジュールはモジュールレイヤ内にある場合とそうでない場合があります。 –
'somefile-0.1.jar'がクラスパスまたはモジュールパスで使用されることを明確にすることはできますか? – nullpointer
@nullpointerモジュールパス。もちろん、両方のパスをサポートしているのは良いことでしょう。 –
モジュールパス上に 'module.getResourceAsStream(" module-info.class ")'のヘルプはありますか? – nullpointer