2010-08-09 2 views
2

jar 파일에서로드 된 모든 java.lang.Class를 수집하는 방법을 찾고 있지만 소스 코드 자체의 메소드는 무시합니다.java.lang.Class가 jar 파일에서 덤프 됨

java.lang.instrument.Instrumentation 인터페이스를 발견했으며 목적을 달성 할 수있을 것이라고 생각했지만 실제로는 그렇지 않습니다. "getAllLoadedClasses"는 모든 java.lang.Class의 out을 덤프합니다 괜찮지 만), 단지 jar 파일에서로드 된 덤프 파일뿐만 아니라 소스 파일에서도로드됩니다.

jar 파일에서 비롯된 java.lang.Class 만 덤프되도록 설정을 사용자 정의 할 수있는 구성이 있습니까? 아니면 더 나은 해결책이 있습니까?

코드 표현에서 달성하고자하는 것은 다음과 같습니다.

java.lang.Class[] 
classesLoadedFromJars = getClassesLoadedFromJars(); 

for (java.lang.Class class : classesLoadedFromJars) { 
    // .............. 
} 

제안 사항에 대한 한두 단어가 도움이 될 것입니다.

미리 감사드립니다.

+2

당신이 해결해야 할 문제가 무엇에서 유래 경우? –

+2

"소스 코드에서로드 된 클래스"는 무엇을 의미합니까? – dty

+0

'class'를 변수 이름으로 사용하고 있습니다. 이 컴파일이 확실합니까? – mkadunc

답변

1

클래스의 클래스 로더는 특정 클래스가로드 된 위치에 대한 단서를 제공 할 수 있어야합니다.

ClassLoader loader = myClass.getClassLoader() 
if (loader instanceof URLClassLoader) { 
    URLClassLoader uLoader = (URLClassLoader)loader; 
    URL cURL = uLoader.getResource(myClass.getName().replace('.', '/')+".class"); 
} 

jar://cURL 시작은 클래스는 jar 파일

+0

사용할 함수는 무엇입니까? – Daniel

+0

몇 가지 예제 코드를 추가했습니다. classLoader가 .class 파일을 수동으로 찾을 수있게하는 것보다 더 좋은 방법이없는 것 같습니다. – mkadunc

관련 문제