jar in jar

wako

Grünschnabel
hallo, ich habe folgendes Problem.

ich habe ein package mit allegemein nutzbaren klassen. dieses package habe ich in ein JarFile (TestPackage.jar) gepackt. jetzt habe ich ein anderes projekt, dass klassen aus diesem package benötigt. das neue projekt ist ebenfalls in einer JarFile (TestProjekt.jar). nun habe ich im JarFile (TestProjekt.jar) das JarFile(TestPackage.jar) mit reingepackt und will auf die desen klassen über reflection zugreifen. aber wie geht das? habs schon mit dem URLClassLoader versucht:

Code:
String klasse = "wako.java.utils.Debug";
			
URL u = new URL("jar:file://D:/packages/TestProjekt.jar!/TestPackage.jar!/");
URLClassLoader urlcl = new URLClassLoader(new URL[]{u});
			
Class s = Class.forName(klasse,true,urlcl);

	    
Method mm = s.getMethod("showDebug",new Class[]{String.class});
mm.invoke(s.newInstance(),new Object[]{"\nEs geht"});

muss ich denn classpath mässig was in der manifestdatei festlegen? wenn ja was? meine manifestdatei sieht so aus:

MANIFEST:

Manifest-Version: 1.0
Ant-Version: Apache Ant 1.6.2
Created-By: 1.4.2_05-b04 (Sun Microsystems Inc.)
Main-Class: wako.test.main.TestProjekt (die ist in Test Projeckt.jar)

Das JarFile TestProjekt.jar hat folgenden inhalt:

META-INF
Wako/test/main/TestProjekt.class
TestPackage.jar

Folgende fehlermeldung kommt halt immer:

java.lang.ClassNotFoundException: wako.java.utils.Debug
at java.net.URLClassLoader$1.run(URLClassLoader.java:199)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:187)
at java.lang.ClassLoader.loadClass(ClassLoader.java:289)
at java.lang.ClassLoader.loadClass(ClassLoader.java:235)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:219)
at wako.test.main.TestProjekt.main(TestProjekt.java:31)

bräuchte echt dringent hilfe, da ich es in einem richtiges projekt nutzen wöllte, falls es überhaupt möglich ist :)


danke wako
 
Hallo,

füge in Deine MANIFEST Datei folgende Zeile:

Class-Path: TestPackage.jar

damit sollte es gehen. Wenn nicht, packe die TestPackage.jar nicht in das andere JAR rein, sondern einfach im gleichen Ordner.
 
Zurück