JAR-Datei in JAR-Datei

Status
Nicht offen für weitere Antworten.

wako

Mitglied
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
 
jar ins jar funktionieren meines wissens nicht (oder sehr schwierig)... warum entpackst du nicht das innere Jar file einfach ins eigentliche ?? oder geb das innere jar file als lib beim start des anderen an....

PS: es macht meiner Ansicht nach auch keinen Sinn ein Jar in ein Jar zu packen ....
 
danke erstmal für deine antwort.

klar könnte ich auch jar-entpacken und dann ne url zur entpackten jar-file angeben und mit reflection weiter arbeiten. fänds aber pracktisch wenns so gehen würde, ohne große entpack aktionen.

naja, falls jemand ne lösung dafür weis wär nicht schlecht.
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben