java class jar applet classformaterror

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



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.

  1. La extensión .class fue eliminada. Un asunto menor, agregar que se tolera, pero no es correcto.
  2. El Applet eliminado del nombre de clase.