2012-05-01 30 views
8

estoy tratando de escribir aplicación de consola de Java, el código es bastante simple:Java: System.out.println() debe escribir en la consola, pero no

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

Si me quedo esta aplicación de Eclipse, luego veo "test" en la "Consola" de Eclipse, pero si exporto mi aplicación como "Runnable JAR file" y la ejecuto desde Windows XP cmd.exe, no se reproduce nada en la consola.

En el lado seguro, traté de verificar System.console(), devuelve null.

¿Qué puede estar mal?

+1

Tu código funciona bien para mí. Cuando lo ejecuta desde cmd.exe, ¿qué * ve * que ve? –

+1

Creo que 'System.console()' devolverá null en eclipse también. –

+0

¿Cómo está ejecutando el contenedor desde la línea de comando? – Attila

Respuesta

15

¿Cómo estás ejecutando su programa fuera eclipse?

Debe utilizar la línea de comandos como

java -jar yourjar.jar

o

java -cp yourjar.jar ConsoleTest

Si está usando de vez en cuando en lugar javaw no se producirá salida de la consola. El STDOUT de javaw es null. Probablemente esto es lo que sucede cuando haces clic en tu archivo jar.

+0

AlexR, tienes razón, gracias, traté de ejecutar mi aplicación como sugeriste, funciona. Pero esto es un poco doloroso para ejecutar la aplicación cada vez de esa manera, ¿hay alguna manera de hacerlo funcionar solo cuando escribo 'yourjar.jar' y presiono Enter? –

+2

@Dmitry Frank, ejecutar el programa haciendo clic en el archivo jar no es seguro de todos modos. Depende del mapeo de la extensión 'jar' al programa que lo ejecuta (por defecto' javaw') en la máquina del cliente. Muchos desarrolladores cambian esta asignación a 'winzip' porque quieren ver el contenido del archivo jar haciendo clic en él.Entonces, la mejor manera es escribir el archivo 'bat' para Windows y el script de shell para que Unix ejecute el programa Java o para usar WebStart. – AlexR

+0

gracias, pero de todos modos me gustaría tener alguna forma de compilar mi aplicación como una aplicación "Consola", y javaw debería ejecutarla de la misma manera que 'java -jar myapp.jar'. Funcionará al menos para las personas que no cambiaron su configuración =) Lástima que no haya tal opción. –

1

Es probable que su archivo jar ejecutable no funcione como esperaba y no esté ejecutando su clase ConsoleTest.

2

Intente compilarlo en una clase desde la línea de comandos y luego ejecútelo. ¿Eso funciona?

javac ConsoleTest.java 
java ConsoleTest 
+0

¡Eh, funciona! Gracias. En realidad, @AlexR tiene razón, traté de ejecutar mi aplicación como me sugirió, y funciona. –

0

Al igual que lo Hovercraft completa de anguilas escribió, compilar el archivo .java utilizando cmd.exe con el siguiente comando:

javac ConsoleTest.java 

entonces esto va a crear un archivo .class, y queremos compilar con este comando:

java ConsoleTest 

Debería mostrar la salida de "prueba".

4

Necesita ejecutar su archivo jar desde la línea de comandos.

Si hace doble clic en él, no podrá ver las operaciones de línea de comandos que se ejecutan en segundo plano. Los archivos Jar generalmente se ejecutan haciendo doble clic solo cuando implican GUI.

Para ejecutar un archivo JAR desde un símbolo del sistema, simplemente hacer esto:

java -jar ConsoleTest.jar 

Suponiendo que has establecer variables de entorno para java.exe y el directorio actual tiene el archivo jar.

Si esto no funciona, entonces es probable que no sea culpa de su código. También existe la posibilidad de que el archivo de manifiesto que apunta a la clase principal se haya configurado incorrectamente.

+0

gracias, tienes razón. ¿Pero hay alguna forma de hacerlo funcionar solo cuando escribo 'consoletest.jar'? –

+0

Simplemente escribiendo consoletest.jar en cmd no será de ayuda ya que será lo mismo que hacer doble clic en él. Sin embargo, puede crear un archivo por lotes que ejecute java -jar consoletest.jar cuando haga clic en él – EnKrypt

+0

, por supuesto, entiendo que escribir es lo mismo que hacer doble clic en él. Pero me gustaría tener alguna forma de compilar mi aplicación como una aplicación "Consola", y esta aplicación debe comportarse haciendo doble clic exactamente igual que la que ejecuta 'java -jar myapp.jar'. No veo razones para no proporcionar esa opción, en cuanto a que los archivos por lotes y el tipeo manual son dolorosos. –

-1

tiene que instalar java jdk y agregar la raíz del directorio que contiene el archivo java.exe a los directorios de su sistema, encontrará más información en la guía de instalación de jdk.

y ejecute el archivo de la consola con el comando

> java file.java 
+0

Hubiera votado en contra si tuviera esa reputación. Su respuesta no está relacionada con el problema e incluso ese pequeño comando que usted puso allí es incorrecto – EnKrypt

+0

lo siento, entonces, solo quería decir que tiene que usar el comando java que es parte de java jdk y asegurarse de que el entorno la variable está bien configurada. Lo sé para archivos .java, pero también funciona para archivos .jar con más argumentos. –

Cuestiones relacionadas