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 :

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
Voici le manifest :

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
Et voila l'appel HTML :

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');
Je n'ai absolument rien changé comparé à avant. Les librairies sont bien dans le répertoire et en tapant l'URL ça fonctionne.

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.