java.lang.Module
をJava 9の文字列名で取得するには?Java 9でモジュール名を取得する方法は?
は、例えば、我々はその初期化後、少なくともjava.base
で構成ブート層からあなたのモジュールを取得するために
String name = "some.module";
Module module = //how to get here it?
java.lang.Module
をJava 9の文字列名で取得するには?Java 9でモジュール名を取得する方法は?
は、例えば、我々はその初期化後、少なくともjava.base
で構成ブート層からあなたのモジュールを取得するために
String name = "some.module";
Module module = //how to get here it?
一つの方法があります:
String moduleName = "my.module";
Module m = ModuleLayer.boot().findModule(moduleName).orElse(null);
IMO好ましくは安全な方法しかし、モジュールをConfiguration
とシステムClassLoader
を使用してモジュールのModuleLayer
を取得し、次にfindModule
を
Path path = Paths.get("/path/to/your/module");
ModuleFinder finder = ModuleFinder.of(path);
ModuleLayer parent = ModuleLayer.boot();
Configuration configuration = parent.configuration().resolve(finder, ModuleFinder.of(), Set.of(moduleName));
ClassLoader systemClassLoader = ClassLoader.getSystemClassLoader();
ModuleLayer layer = parent.defineModulesWithOneLoader(configuration, systemClassLoader);
Module m = layer.findModule(moduleName).orElse(null);
作成したレイヤーを変更できない場合、正しく理解できますか?つまり、モジュールの追加/削除ができないということですか? –
@Pavel_K一度作成したレイヤーは、それが含まれているモジュール情報の更新情報で変更できます。モジュールのモジュール情報を更新している場合は、モジュールをレイヤーに追加/削除することができます。 – nullpointer
私は次のことを意味します - 私はモジュールAとBを持っていて、これら2つのモジュールでレイヤーを作成します。後で1)このレイヤーに新しいモジュールを追加できますか? 2)モジュールAをこのレイヤーから取り外しますか? 3)この層のモジュールAを更新するか? –
[前の質問](https://stackoverflow.com/questions/46287371/how-to-get-module-by-string-name-in-java-9)を削除して再投稿しないでくださいdownvotesをバイパスします。代わりにそれらに対処するために必要なものを修正してください。 –