xmx run from define java command-prompt mainclass javaw

java - run - "No se pudo encontrar la clase principal" al hacer doble clic en el archivo.jar



run java project from command line (6)

Primero: me doy cuenta de que este problema debe ser bastante simple y que muchas personas parecen haberlo experimentado. Sin embargo, parece que mi problema puede ser ligeramente diferente de las publicaciones existentes.

Estoy usando NetBeans para compilar una aplicación Java. Cuando se termina de construir, la salida va a la carpeta dist / correctamente. El archivo jar está presente allí. Si voy a la línea de comandos, navego a esa carpeta y llamo a lo siguiente:

java -jar Prosperidad.jar

todo funciona bien Obviamente el nombre de la aplicación es Prosperidad. El siguiente comando también funciona bien:

javaw -jar Prosperidad.jar

Sin embargo, al hacer doble clic en el archivo .jar aparece el mensaje: "No se pudo encontrar la clase principal:" y luego se muestra la ruta al archivo .jar. He comprobado cientos de veces que la carpeta META-INF existe dentro del archivo .jar, y que dentro de ella existe un MANIFEST.MF con el nombre de clase principal correcto. También he comprobado que el archivo principal de clase (App.class) .class existe dentro del archivo .jar.

Entonces, la pregunta es: ¿cuál es la diferencia entre hacer doble clic en un archivo y ejecutar javaw en él? ¡Se está volviendo realmente frustrante que no se ejecute!

Gracias por cualquier dirección que puedas darme, ¡estoy arrancándome el pelo aquí!


Acabo de encontrar esta publicación ...

Si tiene el problema solo al hacer doble clic en el archivo jar y no en el inicio de cmd, es probable que la versión del JRE sea incorrecta (6 en lugar de 7).

Solo cambia el valor en regedit en:

[HKEY_LOCAL_MACHINE/SOFTWARE/Classes/jarfile/shell/open/command] "C:/Program Files (x86)/Java/jre6/bin/javaw.exe" -jar "%1" %*

a :

"C:/Program Files/Java/jre7/bin/javaw.exe" -jar "%1" %*

No debería haber ningún problema si este valor se actualiza.

Nota: Cambiar entre las versiones de 32 y 64 bits en Windows:

-> "C:/Program Files/Java/jre7/bin/javaw.exe" -jar "%1" %* usará la versión de 64 bits del JRE -> "C:/Program Files (x86)/Java/jre7/bin/javaw.exe" -jar "%1" %* usará la versión de 32 bits del JRE


Acabo de tener exactamente el mismo problema, arreglado de la misma manera. Tuve que eliminar completamente la asociación, no solo la personalización del usuario, y reinstalar el JRE.

La asociación antes de la corrección era todavía:

jarfile="C:/Program Files (x86)/Java/jre6/bin/javaw.exe" -jar "%1" %*

Y después (lo mismo):

jarfile="C:/Program Files (x86)/Java/jre6/bin/javaw.exe" -jar "%1" %*


Me encontré con este error también. Revisé la asociación de archivos usando el símbolo del sistema y todo fue correcto. No fue hasta que intenté ejecutar el .jar desde la línea de comandos usando java -jar MyProgram.jar que realmente me mostró la raíz del problema.

Resulta que .jar se compiló bajo JDK 7, mientras que solo estaba ejecutando JRE 6. Esto fue un error que se me dio en el indicador que me llevó a la solución real:

Exception in thread "main" java.lang.UnsupportedClassVersionError: MyProgram/Program : Unsupported major.minor version 51.0 at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClassCond(Unknown Source) at java.lang.ClassLoader.defineClass(Unknown Source) at java.security.SecureClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader.access$000(Unknown Source) at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) Could not find the main class: MyProgram.Program. Program will ex it.


Si los métodos anteriores no pueden resolver el problema, intente eliminar el tipo de archivo .jar de su PC (puede buscar en Google un software llamado Unassoc.exe y eliminar el tipo de archivo), ¡y entonces el problema se solucionó! (Al menos, este es mi caso!)


Tal vez sus asociaciones de archivos se desordenaron. En el símbolo del sistema, intente ejecutar

ftype | find "jarfile"

En mi computadora Windows 7 de 64 bits, eso muestra

jarfile="C:/Program Files (x86)/Java/jre6/bin/javaw.exe" -jar "%1" %*

También puedes cambiarlo con ftype :

ftype jarfile="C:/Program Files (x86)/Java/jre6/bin/javaw.exe" -jar "%1" %*


busca tu regedit y comprueba el siguiente elemento

Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT/Applications/javaw.exe/shell/open/command] @="/"C://Program Files (x86)//Java//jre6//bin//javaw.exe/" -jar /"%1/"" [HKEY_CLASSES_ROOT/jarfile/shell/open/command] @="/"C://Program Files (x86)//Java//jre6//bin//javaw.exe/" -jar /"%1/"" [HKEY_CURRENT_USER/Software/Classes/Applications/javaw.exe/shell/open/command] @="/"C://Program Files (x86)//Java//jre6//bin//javaw.exe/" -jar /"%1/""