2010-06-04 1 views

답변

2

JVM은 jar 및 디렉토리가 클래스 경로에있는 순서대로 클래스를 찾습니다.

응용 프로그램 서버 등은 클래스 로더를 대체하는 경향이 있으므로주의해야합니다.이 경우에는 다를 수 있습니다.

0

예측할 수 없습니다.

클래스 경로에 여러 버전의 항아리가 하나씩 있지 않도록하십시오. 응용 프로그램 서버에서 강제로 수행하게되면 일반적으로 번들 대 응용 프로그램 별 라이브러리를 선호하는 구성을 제공합니다.

더 복잡한 것이 필요한 경우 OSGi을보십시오. 동일한 런타임에서 여러 버전을 사용할 수 있습니다.

2

가능한 경우 java 시작 명령 줄에 -verbose 플래그를 추가하십시오. 그러면 어떤 클래스가로드되고 어떤 소스에서 stdout으로 인쇄됩니다. 결과는 다음과 같습니다.

[Loaded javax.xml.transform.stream.StreamResult from C:\Program Files\Java\jre6\lib\rt.jar] 

출력을 파일로 리디렉션하면 더 쉽게 필요한 정보를 구문 분석하거나 검색 할 수 있습니다.

0

A는 높은 수준의 비트 그리고 당신이 봄을 사용하고 있는지 모르겠지만, 당신이있는 경우 - 그것은 이러한 경우에 저를 잘 역할을하는 매우 유용한 유틸리티 클래스가 있습니다

PathMatchingResourcePatternResolver 자원을 찾습니다 (파일) - 클래스 경로/웹 응용 프로그램 루트/파일 시스템/기타와 관련된 다양한 방법으로. 찾고있는 클래스가있는 파일을 찾도록 요청하면 모든 클래스 경로 항목에서 찾을 수 있습니다. 나는 (일반적으로 몇 가지 디버거의 평가/시계에서) 이런 식으로 사용 :

Resource[] resources = new PathMatchingResourcePatternResolver().getResources("classpath*:your/package/YourClassName.class"); 

이 **이 코드에 의해 사용되는 클래스의 어느 당신에게 말할 것이다, 그러나이 경우 귀하의 문제를 정확히 파악하는 데 도움이 있습니다 수업이 어디에서 오는지 확실하지 않습니다.

관련 문제