주어진 유형의 클래스 경로에있는 모든 클래스를 인스턴스화하고 매핑하려고합니다.자바에서 동적으로로드 된 클래스의 .class 파일에 대한 경로 얻기
Reflections
라이브러리를 사용하여 스캔을 수행했으며로드 된 클래스 목록을 받았습니다.
그런 다음 매핑 할 때 충돌이 있는지 확인하고 있습니다 (키는 간단한 클래스 이름 임).
그런 상황이 발생하면 충돌 클래스의 정규화 된 이름과로드 된 경로 (예 : JARs
개가 각각을 찾을 수 있음)를 지적하고 예외를 던지고 싶습니다.
내가, 내가 ... 그 경로를 얻기의 어떤 방법이 있는지 궁금 일뿐만 아니라 메모리에서 클래스를로드 할 수 있습니다 실현,하지만 난 디스크에 JAR
에서로드 된 가정
참조 코드 :
if (isConflictingFactoryRegistered(key, myFactory)) {
Class<? extends MyFactory> class1 = factoryMap.get(key).getClass();
Class<? extends MyFactory> class2 = myFactory.getClass();
try {
throw new RuntimeException("Found two conflicting factories for " + key
+ ": 1. " + class1 + " in " + getClass().getResource(class1.getSimpleName()+".class").toURI() +
" 2. " + class2 + " in " + getClass().getResource(class2.getSimpleName()+".class").toURI());
} catch (URISyntaxException e) {
throw new RuntimeException(e);
}
} else {
factoryMap.put(myFactory.getName(), myFactory);
}
이 코드는 컴파일되지만 작동하지 않습니다. getClass(). getResource (class1.getSimpleName() + ". class")는 null을 리턴합니다. .class
의 경로는 어떻게 얻을 수 있습니까?
그럴듯한 순간 .. 그랬어. 감사합니다. – ronif
문제 없습니다. 도와 드리겠습니다. 그것이 도움이 되었다면 upvote에 자유롭게 느껴라 :) –