2014-06-11 2 views
0

응용 프로그램에 대한 클래스 경로가 여러 개 있습니다 (런타임 중에 일부가 추가됨). 두 곳의 다른 위치에있는 파일을 읽고 싶습니다. 상황에 따라 특정 파일을로드해야합니다. 그래서, 나는 classpaths에 우선권을 부여 할 생각입니다. 그러나 나는 그것이 어떻게 성취 될 수 있는지 모른다.Java의 클래스 경로에 환경 설정 지정

답변

0

당신은 자원이 클래스 로더 내부에 여러 번있는 경우

ExampleClass.class.getResourceAsStream("/path/to/file/inside/class.path"); 

클래스 로더를 사용하여 클래스 경로에서 모든 파일을 읽을 수있는 첫 번째 발생 리소스를 이동합니다.

+0

예, OP가 이미 알고있는 부분입니다. 문제는 클래스 패스 충돌이있을 경우 특정 클래스가 우선권을 갖도록 강제하는 방법입니다. 귀하의 답변에는 정확한 정보가 포함되어 있지만 질문 된 내용에 대한 답변은 없습니다. – Gimby

0

클래스 로더 객체를 사용하면 같은 리소스 경로에 매핑 된 list of all resources을 얻을 수 있습니다

Enumeration<URL> resources = Thread.currentThread().getContextClassLoader().getResources("/path/to/file/inside/class.path"); 
URL은 파일이 될 것이라고

노트에서 오는 항아리에서 찾을 수 있도록해야

자바 서비스 기능을 사용하기에 더 강력한 : 우선 순위를 반환하는 리소스를로드하는 인터페이스 구현

공용 인터페이스 로더 { InputStream getResource (String name); int 우선 순위(); }

ServiceLoader 클래스를 사용하여 리소스를로드하는 서비스를로드하고, 구현에서 반환 한 우선 순위 번호별로 정렬 한 다음 리소스가 발견 될 때까지 getResource를 순서대로 실행하십시오.

관련 문제