[Applet signée] problême ouverture de fichier [résolut mais...]

problême ouverture de fichier [résolut mais...] [Applet signée] - Java - Programmation

Marsh Posté le 01-02-2005 à 10:27:24    

Bonjour
 
J'ai une applet signée sur une page web. Lorsque que j'éxecute cette page web, l'applet fonctionne parfaitement sur certains browsers, mais rien ne se passe sous les autres que j'ai pu essayer.
 
Tous les browsers utilisent le JRE 1.4.2 de SUN, et toute éventuelle machine virtuelle microbesoft est désactivée...
L'applet fonctionne correctement avec IE5.5 et Netscape 7.02, mais refuse de faire quoique ce soit avec IE6.0 et Firefox (sans laisser le moindre message d'erreur) (en fait, elle ne fait plus rien après avoir demandé l'acceptation du certificat)
 
Quelqu'un aurait une idée pour faire marcher ça partour ?
 
Ci joint le code de la page web

Code :
  1. <html>
  2. <head>
  3. <title></title>
  4. </head>
  5. <body>
  6. <applet CODE = "test.class" ARCHIVE = "sTest.jar" width=350 height=200></applet>
  7. </body>
  8. </html>


et celui de l'applet (réduit à la partie défaillante)

Code :
  1. import java.applet.*;
  2. import java.net.*;
  3. public class test extends Applet {
  4.   public void init() {
  5.     try {
  6.       String chemin = "file:/D:/Temp/";
  7.       URL destination = new URL(new URL(chemin) ,"image.jpg" );   
  8.       AppletContext ac = this.getAppletContext();
  9.       ac.showDocument(destination, "_blank" );
  10.     } catch (Exception e) {
  11.       e.printStackTrace();
  12.     }
  13.   }
  14. }


 
Merci d'avance :jap:


Message édité par Nim36 le 10-02-2005 à 09:00:43

---------------
We'll start to worry when the cynics start believing
Reply

Marsh Posté le 01-02-2005 à 10:27:24   

Reply

Marsh Posté le 01-02-2005 à 10:31:15    

Et dans la console, y'a pas de message d'erreur ?
 
Aussi, la balise <applet> n'existe plus, faut utiliser <object> à la place...

Reply

Marsh Posté le 01-02-2005 à 10:38:47    

FlorentG a écrit :

Et dans la console, y'a pas de message d'erreur ?
 
Aussi, la balise <applet> n'existe plus, faut utiliser <object> à la place...


Contenu de la console :  

Code :
  1. Plug-in Java(TM): Version 1.4.2_07
  2. Utilisation de la version JRE 1.4.2_07 Java HotSpot(TM) Client VM
  3. Répertoire d'accueil de l'utilisateur = D:\WINNT\Profiles\NAM
  4. Configuration du proxy : Configuration du proxy du navigateur
  5. ----------------------------------------------------
  6. c:   effacer la fenêtre de la console
  7. f:   finaliser les objets de la file d'attente de finalisation
  8. g:   libérer la mémoire
  9. h:   afficher ce message d'aide
  10. l:   vider la liste de chargeurs de classes
  11. m:   imprimer le relevé d'utilisation de la mémoire
  12. o:   déclencher la consignation
  13. p:   recharger la configuration du proxy
  14. q:   masquer la console
  15. r:   recharger la configuration des politiques
  16. s:   vider les propriétés système
  17. t:   vider la liste des threads
  18. v:   vider la pile des threads
  19. x:   effacer le cache de chargeurs de classes
  20. 0-5: fixer le niveau de traçage à <n>
  21. ----------------------------------------------------


J'ai utiliser le HtmlConverter.exe du JDK pour générer une autre page web avec <object>, et il y a exactement les mêmes comportements avec les même browsers
 


---------------
We'll start to worry when the cynics start believing
Reply

Marsh Posté le 01-02-2005 à 10:39:38    

Même pas un message d'erreur :/ Y'a même pas une petite croix rouge dans l'applet ? Ca bloque comme ça ?

Reply

Marsh Posté le 01-02-2005 à 10:42:54    

FlorentG a écrit :

Même pas un message d'erreur :/ Y'a même pas une petite croix rouge dans l'applet ? Ca bloque comme ça ?


rien.... :pt1cable:  
Y'a pas la moindre croix rouge comme quand ça marche pas... :pt1cable:, donc ça marcherait ?


---------------
We'll start to worry when the cynics start believing
Reply

Marsh Posté le 01-02-2005 à 10:45:07    

Met des "System.err.println("Pouet" )' un peu partout pour voir s'il se passe quelque chose :D

Reply

Marsh Posté le 01-02-2005 à 10:58:45    

Nouve code source :)  

Code :
  1. import java.applet.*;
  2. import java.net.*;
  3. public class test extends Applet {
  4.   public void init() {
  5. System.err.println("1" );
  6.     try {
  7. System.err.println("2" );
  8.       String path = "file:/D:/Temp/";
  9. System.err.println("3" );
  10.       URL destination = new URL(new URL(path) ,"image.jpg" );
  11. System.err.println("4" );
  12. System.out.println("URL = " + destination.getPath() );         
  13. System.err.println("5" );           
  14.       AppletContext ac = this.getAppletContext();
  15. System.err.println("6" );
  16.       ac.showDocument(destination, "_blank" );
  17. System.err.println("7" );
  18.     } catch (Exception e) {
  19. System.err.println("8" );
  20.       e.printStackTrace();
  21. System.err.println("9" );
  22.     }
  23. System.err.println("10" );
  24.   }
  25. }


 
Nouvelle console (aussi bien pour IE55 OK que Firefox Ko...):??:  

Code :
  1. Plug-in Java(TM): Version 1.4.2_07
  2. Utilisation de la version JRE 1.4.2_07 Java HotSpot(TM) Client VM
  3. Répertoire d'accueil de l'utilisateur = D:\WINNT\Profiles\NAM
  4. Configuration du proxy : Configuration du proxy du navigateur
  5. ----------------------------------------------------
  6. c:   effacer la fenêtre de la console
  7. f:   finaliser les objets de la file d'attente de finalisation
  8. g:   libérer la mémoire
  9. h:   afficher ce message d'aide
  10. l:   vider la liste de chargeurs de classes
  11. m:   imprimer le relevé d'utilisation de la mémoire
  12. o:   déclencher la consignation
  13. p:   recharger la configuration du proxy
  14. q:   masquer la console
  15. r:   recharger la configuration des politiques
  16. s:   vider les propriétés système
  17. t:   vider la liste des threads
  18. v:   vider la pile des threads
  19. x:   effacer le cache de chargeurs de classes
  20. 0-5: fixer le niveau de traçage à <n>
  21. ----------------------------------------------------
  22. 1
  23. 2
  24. 3
  25. 4
  26. URL = /D:/Temp/image.jpg
  27. 5
  28. 6
  29. 7
  30. 10


---------------
We'll start to worry when the cynics start believing
Reply

Marsh Posté le 01-02-2005 à 11:02:32    

T'es sûr de la String Path, qu'il n'y ait pas un ou deux '/' qui manque, style "file://" :??:

Reply

Marsh Posté le 01-02-2005 à 11:23:21    

Code :
  1. file://


au lieu de  

Code :
  1. file:/


ça uniformise le comportement : ça ne marche plus non plus sur IE55... (donc, c'est moins bien qu'avant).
D'un autre coté, je suis pas un expert java, et il faut peut-être plein de '/' ailleurs  :??:  ou il préfère des '\\'  :??:  
 
Dans la console, aucun changement, si ce n'est pour l'URL

Code :
  1. URL = /Temp/image.jpg


---------------
We'll start to worry when the cynics start believing
Reply

Marsh Posté le 01-02-2005 à 11:25:16    

Hum... Je crois bien qu'il en faut 3 : file:///D:/Temp/

Reply

Marsh Posté le 01-02-2005 à 11:25:16   

Reply

Marsh Posté le 01-02-2005 à 11:42:34    

FlorentG a écrit :

Hum... Je crois bien qu'il en faut 3 : file:///D:/Temp/


3'/', ça a exactement le même comportement qu'1 seul '/' (IE55 OK, Firefox KO)
Et toujours rien d'anormal dans la console java...
:pt1cable:   :heink:  :??:  


---------------
We'll start to worry when the cynics start believing
Reply

Marsh Posté le 01-02-2005 à 11:45:13    

Et si tu construit ton URL comme ça :

URL destination = new URL(chemin + "image.jpg" );

   

Reply

Marsh Posté le 01-02-2005 à 12:12:33    

FlorentG a écrit :

Et si tu construit ton URL comme ça :

URL destination = new URL(chemin + "image.jpg" );



euh...je suppose que tu veux dire

Code :
  1. String chemin="file:///D:/Temp/image.jpg";
  2. URL destination = new URL(chemin);


(car je vois pas de constructeur à 2 String en entrée...)
...
en utilisant ce code, j'ai de toute façon toujours le même problême (avec 1 ou 3 '/', toujours rien d'anormal dans la console car c'est encore le même trace, fonctionne toujours sous IE55 et toujours pas sous ff...)  :??:  :pt1cable:


---------------
We'll start to worry when the cynics start believing
Reply

Marsh Posté le 01-02-2005 à 12:15:13    

J'ai pas mis deux arguments, j'ai juste fait une concaténation (opérateur +) ;)
 
Sinon je vois pas...

Reply

Marsh Posté le 01-02-2005 à 12:28:07    

FlorentG a écrit :

J'ai pas mis deux arguments, j'ai juste fait une concaténation (opérateur +) ;)
 
Sinon je vois pas...


Autant pour moi, j'ai lu trop vite... :jap:  
 
 :( sinon, bien sur, ça me donne toujours le même comportement que depuis le début  :(  :fou:  :heink:  
 
Merci quand même pour les idées :jap:  
peut-être que quelqu'un d'autre en aura d'autres, alors ? ;)


---------------
We'll start to worry when the cynics start believing
Reply

Marsh Posté le 01-02-2005 à 14:01:03    

Dans la javadoc, j'ai lu :
 

Citation :

An applet viewer or browser is free to ignore showDocument.


 
Ca vient pas de ça ton problème ?

Reply

Marsh Posté le 01-02-2005 à 14:03:00    

Ah ouais, c'est possible que ce soit ça :D

Reply

Marsh Posté le 01-02-2005 à 14:28:17    

patachou a écrit :

Dans la javadoc, j'ai lu :
 

Citation :

An applet viewer or browser is free to ignore showDocument.


 
Ca vient pas de ça ton problème ?


 
:heink: Ca j'avais pas vu avant... :??:  
C'est tout à fait possible que ça vienne de ça...et ça ne m'arrange pas... :(
Il existe un autre moyen de visualiser un document depuis une applet java ?
 
 
Cela dit, je viens de tester l'applet localement et le code fonctionne (firefox ouvre bien une nouvelle fenêtre)...
 
J'ai aussi par erreur activer la console javascript de Ff et en ligne, il y a un "message"

Erreur de sécurité : le contenu situé à http://www.xxxxx.fr/test/test.html ne peut pas charger de données ou établir un lien vers file:///D:/Temp/image.jpg.


aussi bien depuis la page html "applet" (qui ne contient pas de javascript) que depuis la page converti avec le htmlConverter
 
Par contre, localement la console javascript reste vide
 
Quelqu'un sait ce que ça veut dire ?


---------------
We'll start to worry when the cynics start believing
Reply

Marsh Posté le 01-02-2005 à 14:36:13    

Si elle est signée, ça devrait marcher... Ou alors t'as pas mis les bons trucs de sécurité...

Reply

Marsh Posté le 01-02-2005 à 14:59:27    

FlorentG a écrit :

Si elle est signée, ça devrait marcher... Ou alors t'as pas mis les bons trucs de sécurité...


 
Java, je maitrise déjà pas trop :sweat:
donc pour la sécurité, ça doit pas être ça non plus :) ... (En fait je pense que l'applet est signée correctement, car quelque soit le browser utilisé je peux télécharger correctement des fichiers sur le disque dur et écrire des informations dans la base de registre...)
 
pour la signature

Code :
  1. javac test.java
  2. rem keytool -genkey -keystore Boite -keyalg rsa -alias Signature -validity 3600 -keypass password -storepass password
  3. keytool -export -keystore Boite -storepass password -keypass password -alias Signature -file d:\\Test\\CertTest.crt
  4. jar cf0 test.jar *.class
  5. jarsigner -keystore Boite -storepass password -keypass password -signedjar sTest.jar test.jar Signature
  6. jarsigner -keystore Boite -certs -verify -verbose sTest.jar


 
Par la suite, quand j'ai vu que ça marchait pas sous IE60 et Ff, j'ai rajouté ça dans tous les fichiers java.policy (je sais pas  trop si c'est vraiment utile)


grant codeBase "http://www.xxxxx.fr/-" {
  permission java.security.AllPermission;
};


 


---------------
We'll start to worry when the cynics start believing
Reply

Marsh Posté le 02-02-2005 à 16:10:09    

[:atlantis] Y'a d'autres moyens pour afficher une image (ou plus largement un fichier quelconque) depuis un applet que de passer par un showDocument   :??:
 
 
 :hello:  :??:


Message édité par Nim36 le 03-02-2005 à 12:09:21

---------------
We'll start to worry when the cynics start believing
Reply

Marsh Posté le 03-02-2005 à 12:09:53    

[:albator7k] :??: [:atlantis]
Apparemment ça marcherait en partie avec le "truc" cité dans la discussion...
http://forum.hardware.fr/hardwaref [...] 3743-1.htm
(http://www.javaworld.com/javaworld [...] tip66.html)
 
Je ferais d'autres tests plus tard pour vérifier
Personne aurait une meilleure solution / une explication  ??? :jap:  :sweat:  
 
 :hello:
 
---------------------------------
 
 :fou:  :heink:  :sleep:  
Après des tests supplémentaires, la méthode "BrowserControl" (ci dessus) fonctionne correctement avec IE6.0 / Ff1.0 et NS7.02 (JRE 1.4.2) pour une applet signée  :love:  :D (sans avoir besoin de modifier un quelconque fichier policy)
 
Néanmoins, est ce que quelqu'un saurait pourquoi un simple "showDocument"  

  • ne fonctionne pas sous IE6.0
  • fonctionne correctement sous NS7.02
  • ne fonctionne pas sous Ff1.0 (en créant un message dans la console javascript) ?


Est ce vraiment du à "An applet viewer or browser is free to ignore showDocument." ??  
ou est ce qu'il y aurait un problême de café :??:  
 
 
 


Message édité par Nim36 le 09-02-2005 à 12:07:49

---------------
We'll start to worry when the cynics start believing
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed