ModuleFinder — 모듈을 찾는 파인더

ModuleFinder — 모듈을 찾는 파인더

ModuleFinder모듈을 찾는 파인더(finder) 예요. 해석(resolution)이나 서비스 바인딩 중에 모듈을 찾는 데 사용돼요.

출처: Java API Reference

본문

ModuleFinder는 주어진 이름의 모듈을 하나만 찾을 수 있어요. 예를 들어 디렉터리 시퀀스에서 모듈을 찾는 파인더는 주어진 이름의 모듈의 첫 번째 발생을 찾고, 시퀀스에서 더 뒤에 나타나는 같은 이름의 모듈은 무시해요.

예시

Path dir1 = ..., dir2 = ..., dir3 = ...;
ModuleFinder finder = ModuleFinder.of(dir1, dir2, dir3);
Optional<ModuleReference> omref = finder.find("jdk.foo");
omref.ifPresent(mref -> ... );

여기에 정의된 findfindAll 메서드는 여러 이유로 실패할 수 있어요. 여기에는 I/O 오류, 모듈 설명자(module-info.class)를 파싱할 때 감지된 오류, 그리고 ModuleFinder.of가 반환한 파인더의 경우 디렉터리에서 같은 이름의 모듈이 둘 이상 발견된 경우 등이 포함돼요. 오류가 감지되면 이 메서드들은 적절한 원인과 함께 FindException을 던져요. FindException이 던져진 후의 ModuleFinder 동작은 정의되지 않아요. 예를 들어 예외가 던져진 뒤 find를 호출하면 예외를 일으킨 것과 같은 모듈을 스캔할 수도, 하지 않을 수도 있어요. 예외가 던져진 후에는 모듈 파인더를 버리는 걸 권장해요.

ModuleFinder스레드 안전할 필요가 없어요.

static 메서드

  • static ModuleFinder of(Path... entries) — 주어진 경로(들)에서 모듈을 찾는 파인더를 만들거나, JVM에 이미 정의된 모듈들을 찾는 파인더도 있어요.
  • static ModuleFinder compose(ModuleFinder... finders) — 0개 이상의 모듈 파인더 시퀀스로부터 구성된 모듈 파인더를 반환해요.
  • static ModuleFinder ofSystem() — 시스템 모듈을 찾는 파인더를 반환해요.

인스턴스 메서드

  • Optional<ModuleReference> find(String name) — 주어진 이름의 모듈에 대한 참조를 찾아요.
  • Set<ModuleReference> findAll() — 이 파인더가 찾을 수 있는 모든 모듈의 집합을 반환해요.

더 알아보기 (Learn more)