java - juegos - Error de.jar: no se pudo encontrar o cargar la clase principal
make jar java (5)
Traté de poner HelloWorld en un archivo .jar y ejecutarlo, pero no funciona. Creé el archivo java y escribí el programa, y luego escribí en cmd:
javac HelloWorld.java
java HelloWorld
Y funcionó. Luego entré
echo Main-Class: HelloWorld >manifest.txt
jar cvfm HelloWorld.jar manifest.txt HelloWorld.class
y obtuve la salida
added manifest
adding: HelloWorld.class(in = 426) (out= 288)(deflated 32%)
Luego ingresé
java -jar HelloWorld.jar
HelloWorld.jar
y la primera línea funcionó, mientras que la segunda línea me dio un error:
Error: Could not find or load main class path/HelloWorld.jar
que es el mismo resultado que obtuve (en una ventana que se cierra rápidamente) cuando intenté abrirlo con el archivo java.exe en 64 bits jre7 / bin, jdk1.7.0_51 / bin, jdk1.7.0_51 / jre / bin, as así como 32 bit jre7 / bin. He desinstalado y reinstalado tanto mi jre como jdk y recreado mis archivos .class y .jar, pero el problema persiste. Estoy en win8.
Editar: Traté de hacer lo que me sugirió una etérea, pero no tuve suerte. Puse HelloWorld.java en path / com / stackoverflow / user / blrp, lo compilé y funcionó al ingresar
java com.stackoverflow.user.blrp.HelloWorld
en camino Luego creé el manifiesto y el jar por:
(echo Manifest-Version: 1.0
echo Class-Path: .
echo Main-Class: com.stackoverflow.user.blrp.HelloWorld) >manifest.txt
jar cvfm HelloWorld.jar manifest.txt com/stackoverflow/user/blrp/HelloWorld.class
y obtuve la salida
added manifest
adding: com/stackoverflow/user/blrp/HelloWorld.class(in = 454) (out= 312)(deflat
ed 31%)
pero aún así, java -jar HelloWorld.jar funcionó y HelloWorld.jar no (el mismo error). También traté de no hacer lo del paquete, solo el Class-Path en manifiesto, el mismo resultado.
(Además, resolví el problema antes de hacer la pregunta mediante el uso de un archivo .bat, pero aún así sería bueno conseguir que funcione ese archivo).
Siempre puedes ejecutar esto:
java -cp HelloWorld.jar HelloWorld
-cp HelloWorld.jar
agrega el jar al classpath, luego HelloWorld
ejecuta la clase que escribiste.
Para crear un jar ejecutable con una clase principal sin paquete, agregue Class-Path: .
al manifiesto:
Manifest-Version: 1.0
Class-Path: .
Main-Class: HelloWorld
Aconsejaría usar un package
para dar a su clase su propio espacio de nombres. P.ej
package com..user.blrp;
public class HelloWorld {
...
}
Gracias jbaliuka por la sugerencia. Abrí el editor de registro (escribiendo regedit en cmd) y yendo a HKEY_CLASSES_ROOT> jarfile> shell> open> comando, luego abriendo (Predeterminado) y cambiando el valor de
"C:/Program Files/Java/jre7/bin/javaw.exe" -jar "%1" %*
a
"C:/Program Files/Java/jre7/bin/java.exe" -jar "%1" %*
(Acabo de eliminar el w en javaw.exe). Después de eso, tiene que hacer clic con el botón derecho en un jar -> abrir con -> elegir el programa predeterminado -> navegar a su carpeta java y abrir / jre7 / bin / java.exe (o cualquier otro archivo java.exe en tu carpeta java). Si no funciona, intente cambiar a javaw.exe, abra un archivo jar con él y luego vuelva a encenderlo.
No sé nada sobre la edición del registro, excepto que es peligroso, por lo que es posible que desee hacer una copia de seguridad antes de hacer esto (en la barra superior, Archivo> Exportar).
Encontré esta pregunta cuando estaba buscando la respuesta a la pregunta anterior. Pero en mi caso el problema era el uso de un ''en dash'' en lugar de un ''dash''. Compruebe qué tablero está utilizando, podría ser el incorrecto. Espero que esta respuesta acelere la búsqueda de otra persona, un comentario como este podría haberme ahorrado un poco de tiempo.
Me enfrenté al mismo problema al instalar una configuración usando un archivo jar. La solución que funcionó para mí es
- abrir símbolo del sistema como administrador
- Vaya al directorio jdk bin (Ex.C: / Program Files / Java / jdk1.8.0_73 / bin)
- ahora ejecuta
java -jar <<jar fully qualified path>>
Funcionó para mí :)
Si este problema no hubiera podido encontrar la respuesta, entonces busqué otros hilos, descubrí que estaba haciendo mi aplicación con 1.8, pero por alguna razón mi jre no estaba actualizada, aunque recuerdo haberla actualizado. Descargué las últimas jre 8 y el archivo jar se ejecuta perfectamente. Espero que esto ayude.