Bonsoir tout le monde,

dans mon projet actuel, je suis confronté à un petit problème. Je déploie mon appli via Java Web Start. Le soft est composé de plusieurs fichiers *.jar, répartis selon la structure suivante:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
+- /Monprojet/dist/
  --MonAppli.jar
    +- libs/
      --UnJar.jar
      --UnAutreJar.jar
      --UnTroisieme.jar
Les dépendances sont les suivantes: "MonAppli.jar" utilise "libs/UnJar.jar", et "libs/UnJar.jar" requiert "libs/UnAutreJar.jar" et de "libs/UnTroisieme.jar"

J'ai donc les manifest suivants:
Pour MonProjet.jar:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
Manifest-Version: 1.0
Class-Path: ./libs/UnJar.jar
Main-Class: mypack.MyApp
...et pour "UnJar.jar":
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
Manifest-Version: 1.0
Class-Path: ./UnAutreJar.jar ./UnTroisieme.jar
Tout semble très simple et naturel... et cela fonctionne en tant qu'application normale... mais lorsque je veux lancer l'appli depuis Java Web Start, je reçois l'exception suivante:

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
 
java.lang.ExceptionInInitializerError
	at pills.app.Application.<init>(Application.java:69)
	at shareddiary.JSharedDiary.<init>(JSharedDiary.java:68)
	at shareddiary.JSharedDiary.<clinit>(JSharedDiary.java:33)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at com.sun.javaws.Launcher.executeApplication(Unknown Source)
	at com.sun.javaws.Launcher.executeMainClass(Unknown Source)
	at com.sun.javaws.Launcher.doLaunchApp(Unknown Source)
	at com.sun.javaws.Launcher.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)
Caused by: java.security.AccessControlException: access denied (java.util.PropertyPermission user.home read)
	at java.security.AccessControlContext.checkPermission(Unknown Source)
	at java.security.AccessController.checkPermission(Unknown Source)
	at java.lang.SecurityManager.checkPermission(Unknown Source)
	at java.lang.SecurityManager.checkPropertyAccess(Unknown Source)
	at java.lang.System.getProperty(Unknown Source)
	at pills.globals.GlobalToolkit.<clinit>(GlobalToolkit.java:162)
	... 12 more
Comme on peut le remarquer, l'exception se produit lorsque je tente d'accéder à la propriété système "user.home" (via un appel de System.getProperty("user.home")). Ce code est placé dans une classe du jar "libs/UnJar.jar"

Pourtant, tous les jars sont signés avec le même certificat, et j'accorde tous les droits dans le fichier jnlp, avec "<security><all-permissions/></security>"...

PS: je tourne en Java 6, j'espère qu'il ne s'agit pas d'un bug de la version beta


Quelqu'un aurait-il une idée sur la cause du problème ainsi que la manière de corriger cela?

Merci d'avance!!