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가 있고이 두 모듈로 레이어를 만듭니다. 나중에 1)이 레이어에 새 모듈을 추가 할 수 있습니까? 2)이 레이어에서 모듈 A를 제거 하시겠습니까? 3)이 레이어의 모듈 A를 업데이트 하시겠습니까? –
[이전 질문] (https://stackoverflow.com/questions/46287371/how-to-get-module-by-string-name-in-java-9)을 삭제하고 다시 게시하지 마십시오. 하향 회선을 우회한다. 대신 문제를 해결하는 데 필요한 것을 수정하십시오. –