L
Litti
Gast
Hallo zusammen,
ich kämpfe seit gestern mit einem Problem, zu dem ich einfach keine Lösung finde. Ich muss zur Laufzeit meines Programmes Klassen nachladen - soweit ja noch kein Problem. Das entsteht erst, wenn diese Klasse dann auch noch auf Jar-Bibliotheken zugreifen will (Name dieser Jar ist bekannt).
Ich habe das Szenario einfach mal auf das Wichtigste gekürzt und getestet, hier meine Test-Klasse (alle Files liegen im gleichen directory):
Ausgabe beim Ablaufen der Klasse:
Ich mache da wohl einen grundsätzlichen Fehler beim Umgang mit ClassLoadern. Wäre toll wenn mir wer weiterhelfen könnte, oder auch nur einen Anstoß, eine Idee...
LG Litti
ich kämpfe seit gestern mit einem Problem, zu dem ich einfach keine Lösung finde. Ich muss zur Laufzeit meines Programmes Klassen nachladen - soweit ja noch kein Problem. Das entsteht erst, wenn diese Klasse dann auch noch auf Jar-Bibliotheken zugreifen will (Name dieser Jar ist bekannt).
Ich habe das Szenario einfach mal auf das Wichtigste gekürzt und getestet, hier meine Test-Klasse (alle Files liegen im gleichen directory):
Code:
try
{
URL urls [] = new URL[2];
urls[0] = new URL("file:./JarTest");
urls[1] = new URL("file:./JarFile.jar");
URLClassLoader cl = new URLClassLoader (urls);
// PutString gibt einfach in der toString() ein "hiho" zurück
Class oClass = cl.loadClass("PutString");
Object o = (Object)oClass.newInstance();
System.out.println(o);
System.out.println ("Success!");
// ITest ist ein Interface mit der Methode setFields()
// JarTest implementiert ITest, erstellt in setFields() eine Klasse PutString und
// gibt in der toString die toString von PutString zurück (also "hiho")
Class iTestClass = cl.loadClass("JarTest");
ITest test = (ITest)iTestClass.newInstance();
System.out.println ("Success!");
test.setFields();
System.out.println(test);
}catch (Exception ex)
{
System.out.println ("Failed.");
ex.printStackTrace ();
}
Ausgabe beim Ablaufen der Klasse:
Code:
hiho
Success!
Success!
Exception in thread "main" java.lang.NoClassDefFoundError: PutString
at JarTest.setFields(JarTest.java:6)
at Test.main(Test.java:28)
Ich mache da wohl einen grundsätzlichen Fehler beim Umgang mit ClassLoadern. Wäre toll wenn mir wer weiterhelfen könnte, oder auch nur einen Anstoß, eine Idee...
LG Litti