2012-05-04 16 views
5

Quiero ejecutar un archivo Jar haciendo doble clic en él.Hacer doble clic en el archivo JAR no abre el Símbolo del sistema

A continuación se muestra el único archivo de clase Java presente en él.

import java.io.BufferedReader; 
import java.io.InputStreamReader; 
import java.io.IOException; 
public class Sysout{ 
public static void main(String[] args) throws IOException{ 
    System.out.println("Hello World!"); 
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
    String msg = br.readLine(); 
    System.out.println(msg); 
    br.read(); 
} 
} 

Y el archivo de manifiesto tiene Main-Class defined.

Utilizando el enlace this, ejecuté correctamente el archivo Jar haciendo doble clic en el archivo por lotes. Esto abre el símbolo del sistema y ejecuta la clase principal definida.

Sin embargo, si hago doble clic en el archivo Jar directamente, no pasa nada. También revisé this enlace y asocié mi .jar a javaw.exe This enlace también sugiere lo mismo. También se intentó asociando el .jar con java.exe

Lo que ocurre es que el símbolo del sistema se abre durante una fracción de segundo y desaparece.

Incluso si espero que el usuario ingrese algunos datos, al hacer doble clic no se espera a que el usuario ingrese nada.

¿Dónde está el problema?

+2

¡Cuando asocia su .jar a javaw, deliberadamente no muestra una ventana de comandos! asociarlo a java, y debería ver la ventana – Petesh

+0

@Petesh ¿Puede agregar este comentario como respuesta? Estoy seguro de que serás recompensado. – adarshr

+0

Asociarme con java.exe. Sin embargo, la ventana solo se muestra por una fracción de segundo. Sírvase referir la publicación actualizada – whitehat

Respuesta

1

Puede ser que su archivo .jar haya enlazado con cualquier otro programa predeterminado, haga clic con el botón derecho y abra con 'Java (TM) Platform SE binary'. Esto debería funcionar si tiene un archivo jar ejecutable.

13

Cuando utiliza la asociación javaw, no crea una ventana de comandos y se traga todas las invocaciones System.out y System.err.

Debería reasociar su archivo .jar con el binario java, que debería mostrar la ventana de comandos necesaria.

Si usó la opción simple Open With..., se habrá omitido la opción -jar desde la línea de comandos.

abrir una ventana de comandos de administrador (esto es necesario si está usando Vista o Windows 7 con UAC activado) y hacer:

assoc .jar=jarfileterm 
ftype jarfileterm="C:\Program Files\Java\jre7\bin\java.exe" -jar "%1" %* 

En su caso, se debe sustituir la ruta C:\Program Files\Java\jre7\bin\java.exe con el para su instalación de la jre.

Al hacer doble clic en esto, debe ejecutarse correctamente.

Se puede agregar otro ftype:

ftype jarfile="C:\Program Files\Java\jre7\bin\javaw.exe" -jar "%1" %* 

nuevo que sustituye la ruta al binario javaw con el que es para el sistema.

Ahora debería ser capaz de cambiar entre ventanas y no en ventanas mediante la elección de forma alterna y assoc .jar=jarfiletermassoc .jar=jarfile

Si desea mantener la ventana de comandos después de ejecutar el torno.tarro, entonces rodean la llamada del comando java con una cmd /s /k a saber:

ftype jarfileterm=cmd /s /k ""C:\Program Files\Java\jre7\bin\java.exe" -jar "%1" %*" 
assoc .jar=jarfileterm 

Si estos comandos trabajaron, a continuación, hacer doble clic en el archivo jar provocará una ventana de comandos para que se levante y persisten.

No puede establecer una línea de comando lo suficientemente compleja con Open With... o con Default Programs que permitirá que se ejecute el archivo jar. Si ha intentado con éxito todos estos esfuerzos ftype y assoc comandos y todavía no funciona, tendrá que pelar el editor de registro.

lanzamiento regedit, y la búsqueda de una clave llamada .jar bajo HKEY_CLASSES_ROOT - esto debería resultar en un único valor por debajo de ella llama (Default) con un valor, si sus llamadas al comando ftype trabajadas, entonces debería leer jarfileterm. Si no funcionó, entonces está buscando una asociación que puede haber sido creada por otra aplicación (no sé si el actualizador de Java reemplaza estas entradas, pero si lo hace, entonces este podría ser el problema)

Debe buscar esta clave en el HKEY_CLASSES_ROOT. Encontrará esta entrada, que debe contener la clave Shell (es decir, expanda la carpeta jarfileterm y debe mostrar otra carpeta Shell), que contiene una clave Open que contiene una clave Command que contiene un valor (Default) que debe contener el comando de invocación para lanzando archivos .jar Este comando debe coincidir con las últimas entradas ftype jarfileterm=... que escribió. Si no lo hace, debe hacer que coincida con una de las opciones cmd /s /k o "c: \ program files \ java \ jre7 \ bin \ java.exe" (según si desea persistir en la ventana de comandos en caso de error al iniciar o no)

+0

I jar asociado a java.exe presente en jre/bin. Sin embargo, esto abre un símbolo del sistema por un segundo y desaparece. Estoy esperando una entrada de usuario usando BufferedReader. Por lo tanto, debería esperar a que el usuario ingrese algo antes de desvanecerse así. – whitehat

+0

si usó la opción simple 'Abrir con ...', la opción -jar faltaría, causando el problema que está encontrando. Actualizaré la respuesta con un conjunto de opciones que se pueden usar desde la línea de comandos para configurar esto correctamente. – Petesh

+0

Gracias por actualizar la respuesta. Seguí la configuración de la solución tanto jarfileterm como jarfile. Asociado .jar a jarfileterm. Sin embargo, esta solución no funciona :(El mismo problema persiste. Símbolo del sistema se muestra solo por una fracción de segundo. – whitehat

Cuestiones relacionadas