2014-12-17 5 views
1

jar 파일이있는 디렉토리가 있습니다. 둘 이상의 jar 파일에서 일부 클래스를 사용할 수 있습니다. 다른 시스템에서, 상기 코드를 실행하는 동안클래스 로더에 대한 설명이 필요합니다

List<URL> jarsToLoad = new ArrayList<URL>(); 
File jarDir = new File("Directory name having jar files"); 
for (File jarFile : jarDir.listFiles()) 
{ 
    jarsToLoad.add(new URL("file", null, jarFile.getPath())); 
} 
Thread.currentThread().setContextClassLoader(new URLClassLoader(jarsToLoad.toArray(new URL[jarsToLoad.size()]))); 

jarDir.listFiles()는 다른 순서로 병을 나열한다. Test.class가 A.jar 및 B.jar에 존재하는 경우, Jar가 먼저 나열된 기준으로 B.jar 형식으로로드되는 일부 시스템에서 Test.class가 A.jar에서로드되는 경우 (JAVA API 설명서에 따르면 listFiles() 메서드는 특정 목록 순서를 보장하지 않습니다).

A.jar & B.jar가 모두 tomcat $ CATALINA_HOME/lib 디렉토리에있는 경우 jar tomcat이 Test.class를로드한다고 가정합니다.

이 특정 시나리오에서 tomcat이 jar 파일에서 클래스를로드하는 방법에 대한 설명이 필요합니다.

미리 감사드립니다.

답변

2

Java 기본 호출.

그래서 우리는 제어 할 필요가 없습니다.

그래서 처리하기 전에 정렬을 사용합니다.

직접 작성하여 Comparator으로 정렬 할 수 있습니다.

+0

감사를 알 필요가 전부입니다. 바람둥이 클래스 로더 동작을 복제하려고합니다. 나는 바람둥이가 그런 정렬을하고 있는지 알고 싶다. 그렇다면 그것들을 정렬하는 방법 (알파벳 순서 또는 다른 매개 변수를 사용하여 정렬하는 방법)은 무엇인가? – Cheran

관련 문제