java.lang.ClassFormatError: valor mágico incompatible 218774561
jar applet (3)
Hola a todos, hoy estoy haciendo mi primer applet para Java. He estado usando un subdominio en un servidor y no sé qué hacer porque estoy obteniendo este error realmente extraño.
Tengo mi jar en el servidor y todo, pero cada vez que intento cargar el Applet esto sucede.
java.lang.ClassFormatError: Incompatible magic value 218774561 en el archivo de clase Evolution / EvolutionApplet
Tras la investigación, parece que un valor mágico incompatible significa que algo se ha corrompido en el .jar
Aquí está el sitio web http://dementedgames.site88.net/Main.html el nombre de los jars es Evolution si necesita el código html en el sitio web.
Editar: El applet debe ser lanzado desde Evolution.EvolutionApplet no Evolution.Evolution
BalusC arriba lo ha explicado muy bien. Además de eso, puede consultar este enlace. Tema: error mágico incompatible 218774561 error en el applet.
Parece que la base de código y / o el atributo de código de su etiqueta de applet deben señalarse correctamente.
El valor mágico de una clase Java válida es 0xCAFEBABE
, que es el valor hexadecimal de 3405691582
. Esto está representado por los primeros 4 bytes del archivo. ¡Pero 218774561
que a su vez representa los caracteres ASCII CR
, LF
, <
y !
(el CRLF es una nueva línea). Para verlo usted mismo, ejecute este fragmento de código:
int magic = 218774561;
ByteBuffer b = ByteBuffer.allocate(4);
b.putInt(magic);
System.out.println(new String(b.array()));
Esto en combinación con el applet servido por un sitio web sugiere que es el comienzo de un <!DOCTYPE>
que a su vez sugiere que es un documento HTML.
Entonces, la solicitud a Evolution.jar
aparentemente ha devuelto un documento HTML. Debería poder verlo usted mismo cuando cambie el URI de solicitud actual en la barra de direcciones del navegador para que apunte a la URL del applet (por ejemplo, cambie /page.html
en el final de la URL a /Evolution.jar
). Luego verá lo que el navegador realmente recuperó cuando intentó descargar el applet. Tal vez es un simple documento de error HTTP 404.
Para solucionarlo, solo asegúrese de que la URL en el atributo de archive
sea correcta. Es relativo a la URL de solicitud actual como se ve en la barra de direcciones del navegador.
El problema original parece arreglado ahora. Podría descargar el Jar de http://dementedgames.site88.net/Evolution.jar
Actualizar
¡Parece que la clase Evolution.Evolution
no es un applet! Ejecutarlo desde la línea de comando usando:
java -jar Evolution.jar
Produce un marco (con un aspecto muy ''retro'')! Como tal, olvide las tonterías de este applet e inicie el marco desde un enlace usando Java Web Start .
Vieja respuesta
OTOH ahora arroja una excepción ClassNotFoundException
que (después de inspeccionar el tarro) me hace pensar que debería ser:
<html>
<head>
<title>Evolution</title>
</head>
<body bgcolor="#000000" text="#906060">
<center>
<applet code="Evolution.Evolution" archive="Evolution.jar" width="800" height="600">
</applet>
</center>
</body>
</html>
Hay dos cambios en el atributo del code
vale la pena mencionar.
- La extensión
.class
fue eliminada. Un asunto menor, agregar que se tolera, pero no es correcto. - El
Applet
eliminado del nombre de clase.