2009-06-04 11 views
13

que tienen esta clase:System.out no funciona cuando se llama a jar-archivo desde la línea de comandos de Windows

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

y solía "Exportar a JAR ejecutable" de Eclipse función para convertirlo en un frasco-archivo ejecutable (test.jar). Cuando ejecuto este programa en Eclipse, imprime "Hello World!", Pero cuando llamo al archivo jar desde la línea de comandos, no ocurre nada.

que han intentado llamar la jarra-archivo de la siguiente manera:

test.jar 
test.jar -jar 

no hay salida alguna.

Tengo otro programa que también tiene un efecto secundario (además de la salida a stdout) y mientras se realiza el efecto secundario (lo que me dice que el archivo jar definitivamente se ejecutó), nuevamente no se da salida al línea de comando. También he intentado usar stderr, pero eso no hace ninguna diferencia. ¿Alguien sabe cómo puedo hacer que esto funcione?

Gracias!

+0

¿Cómo se llaman el archivo jar desde la línea de comandos? ¿Qué salida (si hay alguna) ves? Lo más probable es que el archivo jar no se ejecute. – kgiannakakis

+0

Actualicé mi pregunta para señalar más claramente que estoy bastante seguro de que se está ejecutando el archivo jar y para mostrar cómo lo llamo. – Jordi

Respuesta

32

Debe plazo el JAR utilizando

java -jar test.jar 

(carpeta bin de su JRE debe agregarse al PATH con el fin de obtener la orden de trabajo en cualquier lugar)

NOTA: Sé que ha creado el JAR utilizando Eclipse pero es posible que desee saber how does an executable JAR works

+5

Creo que esta respuesta es correcta. Ejecutar simplemente "test.jar" probablemente usará "javaw.exe", que es la versión sin consola de "java.exe" que de forma predeterminada está asociada a los archivos .jar. – pauldoo

+1

Sí ... solo en Windows –

+0

El JRE se instala en la RUTA en Windows pr predeterminado, por lo que "java.exe" debería estar disponible inmediatamente después. –

3

Cuando invoca el jar utilizando 'test.jar', el inicio de la aplicación se transfiere al manejador java registrado para los archivos jar, que hacen no se ejecuta en el contexto de la línea de comando.
El manejador de jar predeterminado no abre el sistema basado en consola. {Out, err} identificadores de archivo, ya que significaría una ventana de estilo cmd para cada uno de los archivos jar iniciados, lo que no es una situación ideal.
La respuesta anterior, utilizando java -jar test.jar hace que se ejecute dentro del contexto de la ventana actual de cmd, y así verá la salida.

8

Las respuestas anteriores son correctas, así que aclararé un poco el concepto de "jar ejecutable". No existe un "archivo ejecutable", equivalente a un archivo exe en Windows, en un "archivo ejecutable" solo especificará el punto de "entrada" (la clase principal que desea que se ejecute de manera predeterminada)

un frasco es básicamente un archivo, usted todavía necesita java para poner en marcha realmente el frasco (java-jar your.jar)

el hecho de que en las ventanas es posible que tenga una asociación con javaw.exe que esto significa será lanzado por el sistema operativo cuando haga doble clic en el contenedor, como un archivo .txt que se abra automáticamente con el bloc de notas, no convierte el .txt en un archivo ejecutable.

mira esto así: JAR files revealed

Cuestiones relacionadas