Bonjour,
Suite aux récentes mise à jour de Java sur la sécurité, j'ai entrepris d'acheter un certificat pour signer mon applet (elle était auto-signée auparavant).
J'ai bien réussi à signer l'applet et désormais je n'ai plus le blocage de sécurité initial (mon applet sert à l'upload et a donc besoin des full-permissions).
Mais le problème c'est que j'utilise un certain nombre de librairies externes et depuis la signature de mon applet j'ai un "ClassNotFoundException" qui arrive lorsque je clic sur le bouton d'upload :
Voici le manifest :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44 Plug-in Java 10.51.2.13 Utilisation de la version JRE 1.7.0_51-b13 Java HotSpot(TM) Client VM Exception in thread "AWT-EventQueue-2" java.lang.NoClassDefFoundError: org/apache/commons/httpclient/methods/RequestEntity at Main.uploadClick(Main.java:526) at Main.mouseClicked(Main.java:567) at java.awt.AWTEventMulticaster.mouseClicked(Unknown Source) at java.awt.Component.processMouseEvent(Unknown Source) at javax.swing.JComponent.processMouseEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEventImpl(Unknown Source) at java.awt.EventQueue.access$200(Unknown Source) at java.awt.EventQueue$3.run(Unknown Source) at java.awt.EventQueue$3.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source) at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source) at java.awt.EventQueue$4.run(Unknown Source) at java.awt.EventQueue$4.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source) Caused by: java.lang.ClassNotFoundException: org.apache.commons.httpclient.methods.RequestEntity at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source) at sun.plugin2.applet.Plugin2ClassLoader.loadClass0(Unknown Source) at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source) at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) ... 33 more
Et voila l'appel HTML :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 Manifest-Version: 1.0 Created-By: xxx Codebase: * Permissions: all-permissions Application-Library-Allowable-Codebase: * Caller-Allowable-Codebase: * Application-Name: xxx Trusted-Library: true Main-Class: Main
Je n'ai absolument rien changé comparé à avant. Les librairies sont bien dans le répertoire et en tapant l'URL ça fonctionne.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 var attributes = { codebase: '../ressources/applet/', code: 'Main.class', archive: 'monapplet.jar,commons-httpclient-3.1.jar,commons-codec-1.7.jar,jakarta-commons-net.jar,commons-logging-1.1.2.jar,java-image-scaling-0.8.4.jar,Filters.jar,plugin.jar', width: 940, height: 450 }; var parameters = { permissions: 'all-permissions' }; deployJava.runApplet(attributes, parameters, '1.6');
Et dernière chose très bizarre, la fameuse libraire qui plante (commons-httpclient) était auto-signée avant.
Si je laisse la version auto-signée alors j'ai une popup Java qui dit qu'il n'est plus autorisé d'utiliser des librairies auto-signée.
Et si je retire la signature ou que je la signe avec mon certificat officiel alors j'ai le NotFoundException !
Merci d'avance pour vos réponses.
Partager