Hacer doble clic en el archivo JAR no abre Símbolo del sistema

Quiero ejecutar un archivo Jar haciendo doble clic en él.

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 Manifest tiene Main-Class definida.

Usando este enlace, ejecuté exitosamente 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é este enlace y asocié mi .jar a javaw.exe. Este enlace también sugiere lo mismo. También intentado asociando el .jar con java.exe

Lo que sucede es que el símbolo del sistema se abre por 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?

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

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

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

Abra una ventana de comando de administrador (esto es necesario si está usando Vista o Windows 7 con UAC habilitado) y haga lo siguiente:

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

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

Cuando hace doble clic en seguir esto, entonces debería ejecutarse correctamente.

Puedes agregar otro tipo:

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

nuevamente sustituyendo la ruta al binario javaw por la que corresponde a su sistema.

Ahora debería poder alternar entre ventana y sin ventana eligiendo alternativamente assoc .jar=jarfileterm y assoc .jar=jarfile

Si desea mantener la ventana de comandos después de ejecutar el .jar, rodeará la llamada del comando java con una cmd /s /k :

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

Si estos comandos funcionaron, hacer doble clic en el archivo jar provocará que una ventana de comando aparezca y persista.

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

Inicie regedit y busque una clave llamada .jar en HKEY_CLASSES_ROOT ; esto debería dar como resultado un único valor debajo llamado (Default) con un valor, si las invocaciones de su comando ftype funcionaron, 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, este podría ser el problema)

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

Puede ser que su archivo .jar haya enlazado con cualquier otro progtwig 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.