package, jar file und classpath
-
Hallo
ich habe 2 Klassen A und B, die zu einem package gehören. sie lassen sich kompilieren.(javac A.java B.java)
danach habe ich einen jar aus der 2 klassen erstellt mit einer manifest(A als main-klasse) und classpath fuer den jar gesetzt aber beim ausfueren bekomme ich immer eine fehler:
Exception in thread "main" java.lang.NoClassDefFoundError: A <wrong name: server/A>die Klassen und die jar-datei liegen unter root\server
-----------------Klasse A-------------
package server; public class A { private B b = null;//referenz von Klasse B public static boolean debug = true; public A() { super(); } public static void main(String[] args) { System.out.println("test"); } }
-------------------Klasse B-------------
package server; public class B { public B() { super(); if(A.debug == true)// zugriff auf Klasse A System.out.println("aus B: debug ist true"); } public void f() { if(A.debug == true) System.out.println("aus B.funktion"); } }
----------manifest -----------
Manifest-Version: 1.0 Main-Class: A
-----------------------
jar cmf manifest.txt server.jar *.class set CLASSPATH=pfad von jar datei java -jar server.jar
was mache da falsch ? kann jemand helfen ?[code]
gruss
youssef
-
Vielleicht musst du
Main-Class: server.A
schreiben? Glaube ja und außerdem muss dein jar auch die den Paketen entsprechende Ordnerstruktur haben.
Also solltest du vielleicht lieber ein Verzeichnis höher gehen und dann schreiben:jar -cmf manifest.txt server.jar server
Und vielleicht solltest du das Archiv mal mit WinRar oder so öffnen und gucken ob auch wirklich dein manifest drin steckt. Mir ist es dauern passiert, dass meins nicht drin war, weil meins, das ich per m-Option angegeben hatte, einfach zu kurz war. Offenbar. Jedenfalls wurde dann einfach immer irgendein generiertes Manifest reingepackt und nicht meins. Dann habe ich ein paar Zeilen mehr reingeschrieben (Manifest-Version: 1.0, Version: 1.0, oder sowas) und dann wurde meins auch übernommen.