Frage

Ich muss mein Programm mit dieser Zeile ausführen:

java -DImport=data.txt -Din=input.dat -Dout=output1.dat main.Main

Ich habe versucht, es herauszufinden, wie dies zu tun, aber es kann nicht wirklich bekommen zu arbeiten. Ich benutze Netbeans, da ich wirklich mit Unix-Terminal CLASSPATHs auszukommen nicht und so weiter.

public static void main(String[] args) {    
    String fileIn;
    fileIn = System.getProperty ("Import");
}

FileIn wird immer null als Ergebnis der vorherigen Anweisung.

Ich fange gerade mit -DImport = data.txt, nachdem ich es lösen werde ich die andere versuchen.


Der Teil erledigt ist, Danke. Ich werde versuchen, stdin Einstellung als -DIN statt Tastatur-Datei. Dank


tat ich, was Sie gesagt haben cartoonfox, sein Druck Import null, was bedeutet, FileIn beliebige Zeichenfolge aus System.getProperty isnt Empfangen ( "Import");

Ich erhalte auch diese Warnung:

Warnung: [deprecation] readline () in java.io.DataInputStream veraltet ist                 line = dis.readLine ();

Ich verwende Code auf dieser Seite: http://www.java-tips.org/java-se-tips/java.io/how-to-read-file-in-java.html seit ich weiß nicht viel von Lesern: (

War es hilfreich?

Lösung

Ich glaube, Sie sind verwirrend 2 Konzepte:

  • Java args bezieht sich auf Parameter nach dem Klassennamen übergeben. Also, wenn Sie anrufen:
  

java main.MyMain 0 1 2

Ihre args sind:

  

args [0] = 0

     

args [1] = 1

     

args [2] = 2

  • Java Eigenschaften sind, was Sie mit D wie in -DImport = data.txt
  • sind vorbei

In Ihrem Code, den Sie beide mischen. Entfernen Sie die Zeile

  

if (args.length == 1)

und es funktioniert:)

Andere Tipps

Drop if (args.length == 1) wie Sie keine Argumente parsen, aber Einstellung Systemeigenschaften.

Programm Argumente gehen, nachdem die Hauptklasse wie folgt

main.Main arg1=val arg2=val2

Denken Sie an -Import = foo als eine Möglichkeit, die "Import" Konfigurationsoption der Einstellung auf den Wert "foo".

Legen Sie einfach die if-Anweisung:

public static void main(String[] args) {

String fileIn;
fileIn = System.getProperty ("Import");
System.out.println("Import "+fileIn);
}

BTW ich glaube, Sun wählte -D (im Gegensatz zu - etwas anderes), weil viele C-Compiler können Sie mit -D ein Makro in der Befehlszeile setzen - was bedeutet, wäre es eine Art und Weise der Einstellung namens „Konstanten“ sein auf der Kommandozeile ..., die ähnlich ist, was sie tut in Java.

Ich bin nicht sicher, warum diese null laufen bekommen würde, so ist hier ein Transkript von mir es Kompilieren und Ausführen es -. Mit Ausgang Sie werden auf die Unterschiede müssen schauen zwischen dem, was Sie tun und was ich in diesem Transkript tun:

Script started on Sat Nov  7 18:16:25 2009
bash-3.2$ cat T.java
public class T {

public static void main(String[] args) {

String fileIn;
fileIn = System.getProperty ("Import");
System.out.println("Import "+fileIn);
}
}
bash-3.2$ javac T.java
bash-3.2$ java -DImport=data.txt -Din=input.dat -Dout=output1.dat T
Import data.txt
bash-3.2$ exit
exit

Script done on Sat Nov  7 18:17:07 2009
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top