2012-05-01 1 views
8

Sto cercando di scrivere un'applicazione console Java fa, il codice è molto semplice:Java: System.out.println() dovrebbe scrivere alla console, ma non

public class ConsoleTest { 
    public static void main(String[] args) { 
     System.out.println("test"); 
    } 
} 

Se corro questa applicazione da Eclipse, poi vedo "test" nella "Console" di Eclipse, ma se esporto la mia app come "" file JAR eseguibile e lo eseguo da Windows XP , quindi nulla viene echeggiato alla console.

Sul lato sicuro, ho provato a verificare System.console(), restituisce null.

Cosa può essere che non va?

+1

Il tuo codice funziona bene per me. Quando lo esegui da cmd.exe, cosa * fai * vedi? –

+1

penso che 'System.console()' restituirà null anche in eclissi. –

+0

Come stai eseguendo il jar dalla riga di comando? – Attila

risposta

15

Come stai esegue il programma al di fuori di Eclipse?

Si dovrebbe usare la linea di comando come

java -jar yourjar.jar

o

java -cp yourjar.jar ConsoleTest

Se si utilizza occasionalmente javaw invece alcuna uscita della console sarà prodotto. Lo STDOUT di javaw è null. Probabilmente questo è quello che succede quando fai clic sul tuo file jar.

+0

AlexR, hai ragione, grazie, ho provato a eseguire la mia app come hai suggerito, funziona. Ma questo è un po 'doloroso per eseguire app ogni volta in modo tale, c'è un modo per farlo funzionare solo quando digito 'yourjar.jar' e premere Invio? –

+2

@Dmitry Frank, il programma in esecuzione facendo clic sul file jar non è comunque sicuro. Dipende dal mapping dell'estensione 'jar' al programma che lo esegue (di default' javaw') sul computer del cliente. Molti sviluppatori cambiano questa mappatura in 'winzip' perché vogliono visualizzare il contenuto del file jar facendo clic su di esso.Quindi, il modo migliore è scrivere il file 'bat' per Windows e lo script di shell per Unix per eseguire il programma java o per usare WebStart. – AlexR

+0

grazie, ma in ogni caso mi piacerebbe avere un modo per compilare la mia app come app "Console", e javaw dovrebbe eseguirlo allo stesso modo di 'java -jar myapp.jar'. Funzionerà almeno per le persone che non hanno cambiato le sue impostazioni =) Peccato che non ci sia questa opzione. –

1

È probabile che il file jar eseguibile non funzioni come previsto e in realtà non esegue la classe ConsoleTest.

2

Provare a compilarlo in una classe dalla riga di comando e quindi eseguirlo. Funziona?

javac ConsoleTest.java 
java ConsoleTest 
+0

Huh, funziona! Grazie. In realtà @AlexR ha ragione, ho provato a eseguire la mia app come suggeriva, e funziona. –

0

Come quello che Hovercraft pieno di anguille ha scritto, compilare il file .java utilizzando cmd.exe con il seguente comando:

javac ConsoleTest.java 

Allora questo creerà un file .class, e vogliamo compilare con questo comando:

java ConsoleTest 

Dovrebbe quindi visualizzare l'uscita "test".

4

È necessario eseguire il file jar dalla riga di comando.

Se si fa doppio clic su di esso, non sarà possibile visualizzare le operazioni della riga di comando eseguite in background. I file Jar vengono solitamente eseguiti facendo doppio clic solo quando riguardano la GUI.

Per eseguire un file jar dal prompt dei comandi, basta fare questo:

java -jar ConsoleTest.jar 

Supponendo che hai impostato le variabili d'ambiente per java.exe e la directory corrente ha il file jar.

Se questo non funziona, probabilmente non è colpa del codice. C'è anche la possibilità che il file manifest che punta alla classe Main sia stato impostato in modo errato.

+0

grazie, hai ragione. Ma c'è un modo per farlo funzionare solo quando digito 'consoletest.jar'? –

+0

Basta digitare consoletest.jar in cmd non sarà d'aiuto visto che sarà come fare doppio clic su di esso. È comunque possibile creare un file batch che esegue java -jar consoletest.jar quando si fa clic su di esso – EnKrypt

+0

ovviamente capisco che digitando è uguale a doppio clic su di esso. Ma mi piacerebbe avere un modo per compilare la mia app come app "Console", e questa app dovrebbe comportarsi facendo doppio clic esattamente come è gestita da 'java -jar myapp.jar'. Non vedo motivi per non fornire tale opzione, in quanto i file batch e la digitazione manuale sono dolorosi. –

-1

devi installare java java e aggiungere la radice della directory contenente il file java.exe nelle directory del tuo sistema, troverai ulteriori informazioni nella guida all'installazione di jdk.

e quindi eseguire il file nella console con il comando

> java file.java 
+0

Avrei votato in ribasso se avessi questa reputazione. La tua risposta non è correlata al problema e anche quel piccolo pezzo di comando che hai inserito è sbagliato – EnKrypt

+0

scusa, volevo solo dire che devi usare il comando java che fa parte di java java e assicurarti che l'ambiente la variabile è ben configurata. Lo so per i file .java ma funziona anche per i file .jar con più argomenti. –