2009-06-03 12 views
1

Ich habe ein Problem beim Laden meiner JAR-Datei zur Laufzeit. Mein hotel.jar wird geladen und ein Verfahren davon (make) wird mit dem folgenden Code aufgerufen:Problem beim Laden einer JAR-Datei, die eine Abhängigkeit von einer anderen JAR-Datei hat

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); 

Das Problem in der Klasse HotelPackage.HotelMgt meiner JAR-Datei ist, ich habe eine Klasse Variable eines anderen Klasse (HotelPackage.Hotel), die sich in einer anderen JAR-Datei befindet. Ich versuchte, die andere JAR-Datei mit dem gleichen Code wie oben zu öffnen und zu laden, aber ich erhalte die Ausnahme, die die Klasse nicht def .: Exception in thread „main“ java.lang.NoClassDefFoundError finden: BeanPackage/Hotel

Was ist die Lösung?

Antwort

1

Danke, aber ich fand eine andere Lösung, die wirklich funktioniert. Da ich die ganze Reihe von Komponenten kenne, die miteinander arbeiten, lade ich sie alle mit einer Klassenlade-Instanz (Array von URLs). dann verwaltet der Classloader selbst die Abhängigkeiten.

+0

In diesem Fall möchten Sie vielleicht alle Gläser in ein Meisterglas legen - vielleicht ist dieses Projekt für Sie interessant: http://one-jar.sourceforge.net/ – FunThomas424242

Verwandte Themen