Wie führe ich eine Klasse in einem KRIEG von der Kommandozeile aus?

Ich habe eine Java Klasse, die eine main, und ich verwendet, um zu laufen als standalone-Anwendung über die Befehlszeile z.B.

java -jar myjar.jar params

Musste ich Verpacken Sie die Ausführung von code unter apache und mein code, darunter die entry-point-Klasse von der alten jar, endete in einer war-Datei für die einfache deplyment in den web-server.

Jedoch will ich noch in der Lage sein, um es ausführen von der Befehlszeile aus und der code hat sich nicht geändert und ist alles vorhanden, ich kann einfach nicht herausfinden, wie es zu laufen.

Hier ist, was ich versucht habe...

Nahm ich an, dass der KRIEG nur wie ein Glas, so

java -jar mywar.war params

Fehlgeschlagenen sagen, es war keine main-class im manifest definiert.

Ich manuell Hinzugefügt, ein manifest gegen den Krieg und versuchte es erneut, mit dem gleichen Effekt.

Bemerkte ich, daß in meinem Krieg hatte ich einen Ordner namens META-INF mit einer manifest.mf, so fügte ich eine Zeile zu deklarieren, dass meine main-Klasse als würde ich zu einem normalen manifestieren...

Manifest-Version: 1.0
Main-Class: mypackage.MyEntryPointClass

Dies gab eine noClassDefFoundError mypackage.MyEntryPointClass, die Fortschritte des Geschlechtes. Das führte mich zu glauben, dass es nur ein Pfad-Problem, also habe ich versucht

Manifest-Version: 1.0
Main-Class: WEB-INF.classes.mypackage.MyEntryPointClass

Bekomme ich jetzt den gleichen Fehler, aber mit einem stack-trace,...

Exception in thread "main" java.lang.NoClassDefFoundError: WEB-INF/classes/mypackage/MyEntryPointClass (wrong name: mypackage/MyEntryPointClass)
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(Unknown Source)
        at java.security.SecureClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.access$100(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClassInternal(Unknown Source)

Habe ich gegoogelt, ein bisschen kann aber nichts finden, das beantwortet meine Frage, und ich lese ein paar andere Fragen hier, die sind etwas anders, so dass ich dachte, ich würde post.

Java 1.5, nicht, dass ich denke, dass sollte keinen Unterschied machen.

Noch nicht ausprobiert, aber was über das hinzufügen von ein 'Class-Path' - Eintrag zu dem manifest?
Haben Sie irgendwelche Gründe für diese? Warum nicht Sie versuchen, um zwei verschiedene Baugruppen, eine für web oder als eigenständige Anwendung?
Haben Sie versuchen Sie, einen classpath in der manifest.mf hatte WEB-INF/classes und lassen Sie die Main-Klasse als MeinPaket.MyEntryPointClass ?
versucht den classpath Idee, hat nicht funktioniert
Ich hätte zwei verschiedene Pakete an, scheint es einfach verschwenderisch, wenn der Inhalt des einen ist eine Obermenge der Inhalt der anderen

InformationsquelleAutor Simon | 2009-12-03

Schreibe einen Kommentar