Domanda

Devo eseguire il mio programma con questa riga:

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

Ho cercato di capire come farlo ma non riesco davvero a farlo funzionare.Sto usando Netbeans poiché non vado molto d'accordo con i percorsi di classe del terminale Unix e così via.

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

fileIn ottiene null come risultato dell'istruzione precedente.

Sto appena iniziando con -DImport=data.txt, dopo averlo risolto proverò gli altri.


Quella parte è fatta, grazie.Proverò a impostare stdin come file -Din anziché come tastiera.Grazie


Ho fatto quello che hai detto cartoonfox, stampa Import null il che significa che fileIn non riceve alcuna stringa da System.getProperty("Import");

Ricevo anche questo avviso:

avvertimento:deprecation] readline () in java.io.datainputStream è stato deprecato Line = dis.readline ();

Sto usando il codice da questa pagina: http://www.java-tips.org/java-se-tips/java.io/how-to-read-file-in-java.html dato che non conosco molto i lettori :(

È stato utile?

Soluzione

Penso che si sta confondendo 2 concetti:

  • Java args si riferisce a parametri passati dopo il nome della classe. Quindi, se si chiama:
  

java main.MyMain 0 1 2

tuo args sarà:

  

args [0] = 0

     

args [1] = 1

     

args [2] = 2

  • Java Proprietà sono ciò che si sta passando con -D come in -DImport = data.txt

Nel codice si stia mescolando entrambi. Rimuovere la riga

  

if (args.length == 1)

e funzionerà:)

Altri suggerimenti

if (args.length == 1) caduta come non si è argomenti siano stati analizzati, ma l'impostazione delle proprietà di sistema.

argomenti del programma vanno dopo la classe principale come questo

main.Main arg1=val arg2=val2

Pensa a -Import=foo come un modo per impostare l'opzione di configurazione "Importa" sul valore "foo".

Basta rilasciare l'istruzione if:

public static void main(String[] args) {

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

A proposito, penso che Sun abbia scelto -D (al contrario di - qualcos'altro) perché molti compilatori C ti consentono di impostare una macro sulla riga di comando con -D - il che significa che sarebbe un modo per impostare le "costanti" denominate sul comando -linea...che è simile a quello che fa in Java.

Non sono sicuro del motivo per cui otterresti null eseguendo questo, quindi ecco una trascrizione di me che lo compilo e lo eseguo, con l'output. Dovrai esaminare le differenze tra ciò che stai facendo e ciò che sto facendo in questa trascrizione:

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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top