-
Probleme Applet java
Bonjour,
J’ai un petit (voir gros) problème avec une appli web que je développe actuellement. J’essaie tant bien que mal d’utiliser une applet (pour l’instant un simple HelloWorl). Le souci c’est que je reçois ce type d’erreur :
java.lang.ClassFormatError: HelloApplet (Bad magic number)
at java.lang.ClassLoader.defineClass0(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at sun.applet.AppletClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.applet.AppletClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.applet.AppletClassLoader.loadCode(Unknown Source)
at sun.applet.AppletPanel.createApplet(Unknown Source)
at sun.plugin.AppletViewer.createApplet(Unknown Source)
at sun.applet.AppletPanel.runLoader(Unknown Source)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
En local (avec appletviewer ou simplement en lançant le .html) tout se passe bien. L’erreur survient quand j’essaie de lancer mon applet en passant par un serveur websphere.
J’utilise une jdk 1.4.2. Mon browser est ie6.
J’ai parcouru le forum et fais des recherches dans mon coin et apparemment ce serait un problème de version de JVM ou de transfert en mode ascii au lieu de binary …. Mais je vois pas comment puisque même en compilant les fichiers en local (donc en dehors de mon serveur) puis en collant les .class directement dans mon appli, pour éviter toute recompilation, ça ne passe pas non plus.
Voici mon code html :
<html>
<object
classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93"
width = "300" height = "150">
<param name="code", value="pouet.class">
</object>
</html>
Merci d’avance de m’aider à comprendre ce qui se passe et a régler ce problème.
-
Bonjour,
Vraiment personne n'a une petite idee, une piste ou autre .. bref n'importe quoi qui pourrait reorienter mes recherches au moins parce que la ca fait trois jours que je suis coincee la dessus et je vois vraiment pas ...
On m'a encore parle de transferer mes fichiers en binary mais mon serveur est pour le moment en local donc je ne fais que copier-coller mon .html et mon .class dans l'arborescence de mon application. Est ce qu'il serait possible que lorsque je lance mon serveur il me pourrisse mes fichiers? si c'est le cas que puis-je faire ? il y a un parametrage de websphere qui definit cela ?
Merci d'avance pour la moindre petite piste.
-
Bon, je n'ai pas d'idée non plus mais
- Ecrase ton java actuel
- télécharge Java (https://sdlc3d.sun.com/ECom/EComActi...283B74242E2207)
- mets le sous c:/ dans ton PC
- fais l'installation
- mets son chemin dans le PATH
- Pose ton Applet proprement et
- essaye de la compiler.
On verra (envoie ta ligne de compilation et les erreurs).
Bonne chance
-
As-tu mis ton code dans Eclipse ? (il pourrait manquer des import)
-
Reponse
Bonjour,
Après vérification sur le site de sun, le clsid:8AD9C840-044E-11D1-B3E9-00805F499D93 signifie qu'Internet explorer doit utilisé la dernière version locale de machine virtuelle Java. S'il n'y avait pas du tout de machine virtuelle java présente sur la machine visiteur, alors dans l'absence de attribut optionel au parametre codebase du tag Object #version=x,x,x,x il n'est pas impossible qu'internet explorer tente alors d'exécuter le code avec sa propre machine java virtuelle, la JVM Microsoft, et que du coup, les définitions de classes rencontrée lèvent toutes ces exceptions et empêchent le code de tourner. Il suffirait d'ajouter l'attribut #version comme ceci :
<object
classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93"
width="300" height="150"
codebase="http://java.sun.com/products/plugin/autodl/
jinstall-1_5_0-windows-i586.cab#Version=1,5,0,0">
<param name="code" value="pouet.class">
</object>
Mais pour ne pas s'embeter avec tout ça, le plus simple reste d'exploiter HTMLConverter, il est fournit avec les jdk de sun. On écrit un code HTML basique avec un Tag <APPLET>, puis on le fournit à HTMLConverter, une interface graphique proposera différentes action comme définir la version précise de la machine virtuelle Java à exploiter, ou tolérer des écrats de version, et tout cela en générant un code HTML interprètable aussi bien sur IE, que FireFox ou autre, aussi bien sur PC que sur Mac ou autre, bref, c'est bien plus simple.
Bon courage...