2009-06-04 9 views
13

ho questa classe:System.out non funziona quando si chiama jar-file dalla riga di comando di Windows

public class Test { 
    public static void main(String[] args) { 
     System.out.println("Hello World!"); 
    } 
} 

e ho usato "Esporta in JAR eseguibile" di Eclipse funzione per farne un vaso-file eseguibile (test.jar). Quando eseguo questo programma in Eclipse, stampa "Hello World!", Ma quando chiamo il file jar dalla riga di comando, non succede nulla.

Ho provato a chiamare il vaso-file in questo modo:

test.jar 
test.jar -jar 

non c'è uscita di sorta.

Ho un altro programma che ha anche un effetto collaterale (oltre all'output di stdout) e mentre viene eseguito l'effetto collaterale (che mi dice che il file jar è stato sicuramente eseguito), di nuovo non viene dato alcun output al riga di comando. Ho anche provato a usare stderr, ma non fa differenza. Qualcuno sa come posso fare questo lavoro?

Grazie!

+0

Come si chiama il file jar dalla riga di comando? Quale output (se esiste) vedi? Molto probabilmente il file jar non viene eseguito. – kgiannakakis

+0

Ho aggiornato la mia domanda per far notare più chiaramente che sono abbastanza sicuro che il file jar è in esecuzione e per mostrare come lo chiamo. – Jordi

risposta

32

È necessario corsa il JAR utilizzando

java -jar test.jar 

(cartella bin del vostro JRE deve essere aggiunto al PATH al fine di ottenere il comando di lavoro da qualsiasi luogo)

NOTA: Lo so che hai creato il JAR usando Eclipse ma potresti voler sapere how does an executable JAR works

+5

Credo che questa risposta sia corretta. L'esecuzione di "test.jar" probabilmente utilizzerà "javaw.exe" che è la versione senza console di "java.exe" che per impostazione predefinita è associata ai file .jar. – pauldoo

+1

Sì ... solo su Windows –

+0

JRE si installa nel PERCORSO su Windows pr predefinito, quindi "java.exe" dovrebbe essere disponibile immediatamente dopo. –

3

Quando invochi il jar utilizzando 'test.jar' l'avvio dell'applicazione viene passato al gestore java registrato per i file jar, che eseguono non correre nel contesto della riga di comando.
Il gestore vaso di default fa handle di file non console aprire System based. {Out, err}, poiché ciò significherebbe una finestra in stile cmd per ognuno dei file jar lanciati, che non è una situazione ideale.
La risposta precedente, utilizzando java -jar test.jar fa sì che venga eseguito all'interno del contesto della finestra corrente cmd, e quindi si vedrà l'uscita.

8

Le risposte precedenti sono corrette, quindi mi limiterò a chiarire un po 'il concetto di "eseguibile jar". Non c'è cosa come un "jar eseguibile", equivalente ad un file exe in finestre, in un "jar eseguibile" sarete specificando solo il punto di "ingresso" (la classe principale che si desidera eseguire per impostazione predefinita)

un vaso è fondamentalmente solo un archivio, avrai ancora bisogno di Java per avviare realmente il vaso (java-jar your.jar)

il fatto che in Windows si potrebbe avere un'associazione con javaw.exe significa che questo verrà lanciato dal sistema operativo quando fai doppio clic sul jar, come un file .txt che viene aperto automaticamente con il blocco note, non rende il file .txt un file eseguibile.

Check this out così: JAR files revealed