2017-11-13 5 views
0

디렉토리에 주소를 제공했지만 디렉토리에있는 내용과 관련된 정보가없는 경우 디렉토리에 클래스가 들어 있는지 확인하고 클래스에 액세스 할 수 있는지 확인할 수 있습니까? URLClassLoader을 통해디렉토리 내용을 알지 못하고 디렉토리의 클래스에 액세스

내가 현재 디렉토리의 주소와 URL 배열 만드는거야 : 심지어이 방법으로, 그러나

URL [] urls = new URL[1]; 
urls[0] = new File(address).toURI().toURL(); 
URLClassLoader urlClassLoader = new URLClassLoader(urls); 

을, 내가 아는하지 않기 때문에 URLClassLoader 객체의 클래스에 액세스 할 수있는 클래스가 호출됩니다.

+2

[파일 트리를 걷는 방법] (https://docs.oracle.com/javase/tutorial/essential/io/walk.html)과 찾을 수있는 ".class"파일을로드하는 방법은 무엇입니까? –

+0

Java가 의도적으로 패키지의 클래스를 열거하는 방법을 제공하지 않는다는 것이 맞습니다. 로더를 들여다 보며 디렉토리를 얻고 .class 파일을 열거하는 Guava 유틸리티가 있습니다. – bmargulies

+0

왜 이렇게 필요한지 잘 모르겠습니다 만, 검색 가능한 클래스가 인터페이스를 구현하고 [ServiceLoader documentation] (https : // docs)에 설명 된대로 해당 인터페이스를 서비스 공급자 인터페이스로 만드는 것이 더 나은 것으로 판단됩니다. .oracle.com/javase/9/docs/api/java/util/ServiceLoader.html). – VGR

답변

0

가장 근접한 것은 The Guava ClassPath class입니다. 그러나 URLClassLoader를 엿보고 파일 시스템과 대화를하면됩니다.

+0

그래서'getAllClasses'는 디렉토리에있는 모든 클래스들의 집합을 반환합니까? – Brosef

+0

예, 경고와 함께. 출처를 읽으십시오. – bmargulies

관련 문제