2010-06-08 4 views
0

J'ai une applet qui se charge bien lorsqu'elle est accessible localement (IE et Firefox).Applets dans IPlanet avec Firefox (classe non trouvée)

Cependant, quand je mets ma page Web dans un serveur web (IPlanet local), il refuse de charger sur Firefox (mais toujours bien sur IE). Je reçois l'erreur suivante dans la console java:

load: class XXX.localprinting.LocalPrintingApplet.class not found. 
java.lang.ClassNotFoundException: XXX.localprinting.LocalPrintingApplet.class 
    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) 
Caused by: java.io.IOException: open HTTP connection failed:https://XXX/test/XXX/localprinting/LocalPrintingApplet/class.class 
    at sun.plugin2.applet.Applet2ClassLoader.getBytes(Unknown Source) 
    at sun.plugin2.applet.Applet2ClassLoader.access$000(Unknown Source) 
    at sun.plugin2.applet.Applet2ClassLoader$1.run(Unknown Source) 
    at java.security.AccessController.doPrivileged(Native Method) 
    ... 7 more 
Exception: java.lang.ClassNotFoundException: XXX.localprinting.LocalPrintingApplet.class 

[EDIT] En permettant plus de trace dans la console java, je reçois effectivement à la racine du problème:

network: Connecting http://ZZZ:443/ with proxy=DIRECT 
security: Loading Root CA certificates from C:\Program Files\Java\jre6\lib\security\cacerts 
security: Loaded Root CA certificates from C:\Program Files\Java\jre6\lib\security\cacerts 
security: Loading SSL Root CA certificates from C:\Program Files\Java\jre6\lib\security\cacerts 
security: Loaded SSL Root CA certificates from C:\Program Files\Java\jre6\lib\security\cacerts 
security: Loading Deployment SSL certificates from C:\Documents and Settings\ZZZ\Application Data\Sun\Java\Deployment\security\trusted.jssecerts 
security: Loaded Deployment SSL certificates from C:\Documents and Settings\ZZZ\Application Data\Sun\Java\Deployment\security\trusted.jssecerts 
security: Loading certificates from Deployment session certificate store 
security: Loaded certificates from Deployment session certificate store 
security: Checking if certificate is in Deployment denied certificate store 
security: Checking if certificate is in Deployment session certificate store 
security: Checking if SSL certificate is in Deployment permanent certificate store 
network: Connecting https://ZZZ/modules/print/applet/LocalPrinting.jar with cookie "aria_user_profile={DSƌ!,!C!"ÍÔaÃæK9eä|IC¦!A:i̤!?!7æâ!A7!*E!%!'!F"ú°!4QÎ!B:N´)!'RJ6a\IS" 
network: Connecting https://ZZZ/modules/print/applet/LocalPrinting.jar with proxy=DIRECT 
network: Connecting http://ZZZ:443/ with proxy=DIRECT 
network: Connecting https://ZZZ/modules/print/applet/LocalPrinting.jar with cookie "aria_user_profile={DSƌ!,!C!"ÍÔaÃæK9eä|IC¦!A:i̤!?!7æâ!A7!*E!%!'!F"ú°!4QÎ!B:N´)!'RJ6a\IS" 
**java.io.IOException: Server returned HTTP response code: 400 for URL: https://ZZZ/modules/print/applet/LocalPrinting.jar** 
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source) 
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(Unknown Source) 
    at sun.plugin.PluginURLJarFileCallBack.downloadJAR(Unknown Source) 
    at sun.plugin.PluginURLJarFileCallBack.access$000(Unknown Source) 
    at sun.plugin.PluginURLJarFileCallBack$2.run(Unknown Source) 

Cependant, en utilisant l'URL https://ZZZ/modules/print/applet/LocalPrinting.jar, je peux télécharger avec succès le pot.

Une idée de ce qui pourrait expliquer le comportement différent dans le serveur web?
J'ai déjà recherché le problème de la "classe non trouvée" mais sans trouver quelque chose de pertinent.

Quelques informations supplémentaires:

  • L'applet utilise un fichier jar qui doit être téléchargé. Cependant, je peux voir dans les journaux qu'il essaie de télécharger le fichier de classe

    172.16.195.55 - - [10/juin/2010: 11: 47: 45 +0200] "GET/XXXX/apf/init/XXXX /localprinting/LocalPrintingApplet.class HTTP/1.1" 400 147

  • Il fonctionne localement (pas serveur web) sur IE/Firefox/Chrome

  • Il fonctionne avec Tomcat sur IE/Firefox/Chrome
  • Il fonctionne avec Iplanet sur IE/Chrome
  • Il ne fonctionne pas sur Iplanet avec Firefox (avec ou sans HTTPS)
  • (quand je dis Iplanet, il est Iplanet pour le contenu statique et Weblogic pour des trucs J2EE)

code HTML comme indiqué par Firefox dans Firebug HTML onglet:

<object width="0" height="0" id="eprint_printingApplet" classid="clsid:CAFEEFAC-0015-0000-FFFF-ABCDEFFEDCBA"> 
    <param value="application/x-java-applet;version=1.5" name="type"> 
    <param value="/modules/print/applet/LocalPrinting.jar" name="archive"> 
    <param value="xxx.localprinting.LocalPrintingApplet.class" name="code"> 
    <param value="true" name="mayscript"> 
    <param value="printingApplet" name="name"> 
    <param value="pdt1.glb.XXXX.net,pdt2.glb.XXXX.net" name="host"> 
    <param value="10244" name="port"> 
    <param value="" name="password"> 
    <param value="XXXX" name="unto"> 
    <param value="APPLET" name="env.applicationLabel"> 
    <param value="1" name="env.applicationIndex"> 
    <param value="6X" name="env.XXXX"> 

    <comment> 
     <embed width="0" height="0" env.XXXX="6X" env.applicationindex="1" env.applicationlabel="APPLET" unto="XXXX" password="" port="10244" host="pdt1.glb.XXXX.net,pdt2.glb.XXXX.net" mayscript="true" name="printingApplet" code="XXXX.localprinting.LocalPrintingApplet.class" archive="/modules/print/applet/LocalPrinting.jar" type="application/x-java-applet;version=1.5"> 
     <noembed>No Java Runtime Environment v5.0 support for applet installed</noembed> 
    </comment> 

+0

Juste au cas où, quelle version du JRE et de Firefox? –

+0

JRE: 1.6.0_20 Firefox: 3.6.6 –

Répondre

0

I pense que vous essayez d'accéder à la classe XXX.localprinting.LocalPrintingApplet.class alors que vous devriez accéder à la classe XXX.localprinting.LocalPrintingApplet (sans le '.class')

+0

En fait cela ne change rien (et je l'avais déjà essayé): class XXX.localprinting.LocalPrintingApplet non trouvé (alors il essaye une seconde fois en ajoutant le .class). –

+0

ok, désolé, c'est ce qui semblait évident à partir du journal –

0

Essayez de télécharger le fichier jar directement à partir de Firefox pour voir ce qui se passe. Assurez-vous également que le type MIME correct est défini sur le serveur Web pour les fichiers jar.

+0

Salut. Bonne sugestions. J'avais déjà essayé l'URL du fichier, qui le télécharge avec succès. J'ai également essayé de remplacer l'URL relative par ce chemin d'accès complet et le même problème. Pour le type MIME, comment vérifiez-vous cela? Pourquoi se comporterait-il différemment dans IE/Chrome? –

+0

Vous pouvez utiliser le panneau Net de Firebug pour voir la valeur de l'en-tête de type de contenu. Les types MIME erronés peuvent entraîner des problèmes comme celui que vous avez. Il se peut que le plug-in Java pour Firefox refuse de charger un fichier jar avec un type de contenu incorrect, alors que d'autres navigateurs sont satisfaits. Ceci est bien sûr une supposition sauvage - je crois que cela vaut la peine de vérifier. – kgiannakakis

+0

Ok, sauf que je ne vois aucune trace du pot, que ce soit dans le panneau Firebug Net, ou dans HTTPWatch (IE ou Firefox). Je suppose que c'est délégué à la JVM? –

1

D'autres choses à essayer:

  • est la classe de LocalPrintingApplet dépendante des classes dans le pot? La classe Applet est chargée, comme le montrent les journaux: le pot est-il également chargé? Vous ne devriez pas avoir besoin d'avoir la classe externe au pot.

IE possède ses propres idiosynchrasies, ce qui signifie que deux balises d'objet sont requises: une pour IE et une pour les navigateurs compatibles standard.Voir ce SO question pour un exemple d'un tag objet cross-navigateur pour les applets, et cet article: Demystifying Java Applets

La question SO ci-dessus mentionne également que FF ne jouait pas à la balle, et la solution était de réordonner les paramètres de l'objet :

applet name="XYZ" archive="xxx.jar" code="x.y.Applet" width='100%' height='100%' mayscript="mayscript" 

Serrant à pailles maintenant, mais vous pouvez également utiliser des attributs plutôt que <PARAM> balises enfants comme attributs semblent être plus largement utilisé.

Enfin, si vous n'avez pas réussi jusqu'à présent, cette forum post à la fin montre un objet cross-browser embarqué qui fonctionne à la fois sur FF et IE.

+0

+1 afin que vous obteniez la prime pour le temps passé (se termine en 2 heures). Je sais que j'ai déjà regardé l'ordre des paramètres sans succès. J'ai encore besoin de vérifier les autres suggestions. Je vous tiendrai au courant quand/si résolu. –

+0

Merci pour cela - J'espère que les correctifs vous mèneront à une solution. Pour attribuer la prime, la réponse doit avoir un score de 2 ou être sélectionnée manuellement comme réponse acceptée. – mdma

+0

Pour l'anecdote, je n'ai eu aucun succès avec l'un de ces conseils. Merci quand même. –

0

L'échec est clairement causé par une violation de la sécurité java.security.AccessController.doPrivileged(Native Method)

Il est très probable que la cause est liée soit:

  • manquant ou non valide les certificats SSL ou la signature de l'applet ou
  • cross-site protection de script, soit dans Java ou dans Firefox, ou
  • Un plugin firefox conflictuel comme NoScript, ou
  • java secu préférences de rité dans firefox

Je voudrais vérifier toutes vos préférences de sécurité et plugins java.

Questions connexes