2009-06-03 6 views
1

런타임에 jar 파일을로드하는 동안 문제가 있습니다. 내 hotel.jar가로드되고 그것의 방법 (makeReservation는) 다음 코드를 사용하여 호출 : 문제는 내 jar 파일의 클래스 HotelPackage.HotelMgt에다른 jar 파일에 종속성이있는 jar 파일을로드 할 때의 문제

File file = new File("c:/ComponentFiles/hotel.jar"); 
URL jarfile = new URL("jar", "", "file:" + file.getAbsolutePath() + "!/"); 
URLClassLoader cl = URLClassLoader.newInstance(new URL[]{jarfile}); 
Class componentClass = cl.loadClass("HotelPackage.HotelMgt"); 
Object componentObject = componentClass.newInstance(); 
Method setMethod = componentClass.getDeclaredMethod("makeReservation", null); 
setMethod.invoke(componentObject, null); 

, 나는 다른 사람의 클래스 변수가를 클래스 (HotelPackage.Hotel)는 다른 jar 파일에 있습니다. 나는 열고 위와 같은 코드로 다른 jar 파일을로드하려고하지만 "기본"java.lang.NoClassDefFoundError가 클래스 데프 : 스레드 예외를 찾을 수없는 예외가 나타납니다 BeanPackage/호텔

해결책은 무엇입니까?

답변

1

감사합니다,하지만 난 정말 작동 다른 해결책을 발견 :

자세한 내용은 여기에있다. 서로 작동 할 전체 구성 요소 계열을 알고 있으므로 하나의 클래스 로더 인스턴스 (URL 배열)로 모두로드합니다. 클래스 로더 자체가 종속성을 관리합니다.

+0

이 경우 어쩌면 모든 항아리를 마스터 항아리에 넣으시겠습니까? 아마도이 프로젝트가 여러분에게 재미있을 것입니다 : http://one-jar.sourceforge.net/ – FunThomas424242