2009-12-09 4 views
1

J'essaie de coder une applet et de la mettre dans mon site Web. Je me souviens d'avoir fait cela il y a longtemps en utilisant Borland quand 1.4 était la dernière version. Il a bien sûr utilisé l'étiquette de l'applet (que j'utilise actuellement) et il n'y avait aucun problème. Mais de toute façon, je mets les fichiers de classe dans httpdocs/sous son propre répertoire, puis utilisé ce code dans la page web:L'incorporation d'une applet ne fonctionne pas sur mon site Web

<applet code="wsavatar/WSAvatar" width="425" height="150> Your browser does not support the applet tag. </applet>

Et lorsque je tente de charger la page, cela se produit:

Java Plug-in 1.6.0_17 Using JRE version 1.6.0_17-b04 Java HotSpot(TM) Client VM

java.lang.ClassFormatError: Incompatible magic value 1008813135 in class file 
    wsavatar/WSAvatar 
    at java.lang.ClassLoader.defineClass1(Native Method) 
    at java.lang.ClassLoader.defineClass(Unknown Source) 
    at java.security.SecureClassLoader.defineClass(Unknown Source) 
    at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source) 
    at java.lang.ClassLoader.loadClass(Unknown Source) 
    at java.lang.ClassLoader.loadClass(Unknown Source) 
    at sun.plugin2.applet.Plugin2ClassLoader.loadCode(Unknown Source) 
    at sun.plugin2.applet.Plugin2Manager.createApplet(Unknown Source) 
    at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source) 
    at java.lang.Thread.run(Unknown Source) 
Exception: java.lang.ClassFormatError: Incompatible magic value 1008813135 
in class file wsavatar/WSAvatar 

J'ai essayé de créer un fichier html local rapide pour charger l'applet en utilisant le même code d'applet et cela a fonctionné. J'ai regardé autour de moi en ligne et j'ai entendu diverses choses concernant cette erreur, mais rien ne semble l'atténuer, que j'ai trouvé. Des idées?

Ben

+1

de faire un googling - il y a des dizaines de rapports du même problème – Bozho

Répondre

3

Le problème semble être dans votre site, pas votre code. Googling autour, l'erreur semble être le plus fréquemment signalé avec des systèmes tels que OpenCMS (en particulier pour les URL qui sont sur le port 8080). Donc, ce que j'imagine est que l'appel du navigateur pour charger l'applet échoue réellement, mais renvoie des données plutôt qu'une erreur 404/500. La machine virtuelle Java tente d'interpréter la page d'erreur renvoyée comme s'il s'agissait d'un fichier de classe, et se plaint très correctement qu'il ne semble pas être un fichier de classe valide après tout. (Cela arrive souvent avec les systèmes de gestion de contenu qui redirigent vers la page d'accueil plutôt que de renvoyer une erreur HTTP réelle à l'utilisateur.)

Pour tester, essayez de taper manuellement l'URL de l'applet (pas la page dans laquelle elle est hébergée) , l'applet lui-même) dans votre navigateur et voir ce que le serveur retourne.

+0

Ah, oui, il ne parvient pas à charger l'applet Nous n'utilisons pas de CMS pré-écrit, bien qu'il utilise Savant3, et l'URL directe de l'avatar renvoie un 404. – Ben

+0

Euh, excusez-moi, je veux dire une URL directe à l'applet. – Ben

+0

J'ai été capable d'ajouter une entrée pour l'applet elle-même comme si c'était une page séparée, et cela a résolu cette erreur (bien que maintenant j'ai plus à déboguer!). Je vous remercie. – Ben

5

Le nombre magique est une valeur de quatre octets (0xCAFEBABE) au début du fichier de classe qui le marque en tant que fichier de classe plutôt que tout autre type de données.

Alors quel type de fichier a le nombre magique 1008813135? En hexadécimal qui devient octets 0x3C, 0x21, 0x44, 0x4F. "<!DO" est probablement interprété comme "<!DOCTYPE" .Ce qui est probablement un fichier HTML est probablement une page d'erreur retournée par un serveur corrompu seulement avec un code de succès sans erreur dans le HTTP

Jetez un coup d'œil à ce qui est réellement servi Un navigateur web affichera probablement la page Il vaut la peine d'apprendre à utiliser telnet (ou nc) et tapez la réponse HTTP à la main Il existe aussi divers utilitaires pour inspecter le trafic HTTP

+0

Merci, il semble, comme je l'ai mentionné en réponse à l'autre réponse, que c'est une page 404 qu'il retourne, d'où la balise . – Ben

Questions connexes