java programm über kommandozeile starten mit dokumentpfad als parameter

danielandross

Erfahrenes Mitglied
Hallo,
ich möchte mein kompiliertes Java Programm über die Kommandozeile ausführen das mache ich folgendermaßen:
Code:
 java -classpath . MyClass

Ich möchte aber dass mein Programm einen Dokumentenpfad als Parameter übernimmt. wenn ich diesen eingebe bekomme ich vom Programm immer eine nullpointerexception. das file existiert nicht. Am Programm kann es nicht liegen weil es 1a funktioniert wenn ichs hardcoded reinmache.
So habe ich es versucht:
Code:
 java -classpath . MyClass d:\\aaa.doc
 
du weißt schon, dass "d:\\aaa.doc" in dem String Array unter args[0] zu finden ist?

Ein bisschen Programmcode wäre trotzdem gut. Zumindest wie du die Parameter entgegen nimmst

Und ich würde dir empfehlen eine überprüfen der Eingangsdaten auf nullund/oder größe des Argumentenarrays zu machen. NullPointerException dürfen nicht fliegen, da das vorher abgefangen werden kann.
 
Dass es dann im args[0] stehen soll ist mir klar. Ich mache das so:
Code:
File myFile = new File(args[0]);
			FileInputStream fis = new FileInputStream(myFile);

Ich gehe mal davon aus dass das irgendwie mit dem classpath zusammenhängt.
Ich navigiere ja zuerst in das verzeichnis in dem meine kompilierte Distribution steht und gebe dann den code ein. Kann es vielleicht sein dass die Kommandozeile dann nicht mehr zurück nach d: findet weil ich ja zuvor in einem unterverzeichnis von d: war.
 
Zuletzt bearbeitet:
An deiner Stelle würde ich einfach mal reindebuggen was überhaupt ankommt.

Wenn du eclipse benutzt kannst du auch über die Ausführen Funktion mal Argumente dran hängen.

Was ich mich gerde frage...muss man Argumente auf der Kommandozeile selbst escapen? Ich glaube nicht, im jva source...ja, da dort das Escapezeichen ist, aber in der Kommandozeile doch nicht.
 
Escapezeichen ist im Java Source Code das Backslash("\"), da um im Java Sourcecode in einem String ein Backslash darzustellen muss man zwei schreiben, weil das Backslash auch z.B. benutzt wird um unicode Zeichen im Java sourcecode darzustellen. z.b.
Java:
char einBackslashZeichen = '\\';
System.out.println(einBackslashZeichen);//Ausgabe ist ein \

Du übergibst aber mit d:\\aaa.doc zwei Backslashe, weil in der Kommandozeile der Backslash ja kein Escapezeichen ist, sondern nur ein Zeichen halt. Probier mal in der Kommandozeile nur mal ein Backslash.


P.S.: die ganze Exception wäre auch hilfreich
 
Zuletzt bearbeitet:
ok wir haben den fehler gefunden. Das lag irgendwie daran, dass ich hätte alle libraries in den aufruf hätte einbauen sollen.
trotzdem thx
 
Zurück