Chargement DLL : java.security.AccessControlException: access denied
Bonjour,
je voudrais utiliser un applet java qui utilise la librairire RXTXComm. Cette librairie s'appuie sur un dll pour acceder aux ports COM. J'ai deja consulté sans succès le message http://www.developpez.net/forums/d12...tion-probleme/.
Voici mon installation :
- Certificat genéré : keytool -genkey -keystore myKeyStore -alias me
keytool -selfcert -keystore myKeyStore -alias me - RXTXComm.jar est signé avec le certificat, et est placé dans jre/lib/ext
jarsigner -keystore d:\workspace\myKeyStore RXTXComm.jar me - la dll est placée dans jre/bin
- l'applet est signé avec le certificat
jarsigner -keystore d:\workspace\myKeyStore applet.jar me - Eclipse lance l'applet sans erreur.
- appletviewer genere l'erreur : Caused by: java.security.AccessControlException: access denied ("java.lang.RuntimePermission" "loadLibrary.rxtxSerial")
- Je ne veux pas toucher aux fichiers policy de java.
Traceback de l'erreur :
Code:
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
| D:\workspace>appletviewer test.html
Refresh serial port list
Refreshing serial port list...
java.lang.ExceptionInInitializerError thrown while loading gnu.io.RXTXCommDriver
java.lang.ExceptionInInitializerError
at Instrument$1.run(Instrument.java:135)
at Instrument$1.run(Instrument.java:1)
at java.security.AccessController.doPrivileged(Native Method)
at Instrument.refreshSerialPortList(Instrument.java:133)
at Instrument.initInstrument(Instrument.java:65)
at Instrument.<init>(Instrument.java:40)
at Tanita.<init>(Tanita.java:8)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstruct
orAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingC
onstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:525)
at java.lang.Class.newInstance0(Class.java:374)
at java.lang.Class.newInstance(Class.java:327)
at sun.applet.AppletPanel.createApplet(AppletPanel.java:793)
at sun.applet.AppletPanel.runLoader(AppletPanel.java:722)
at sun.applet.AppletPanel.run(AppletPanel.java:379)
at java.lang.Thread.run(Thread.java:722)
Caused by: java.security.AccessControlException: access denied ("java.lang.Runti
mePermission" "loadLibrary.rxtxSerial")
at java.security.AccessControlContext.checkPermission(AccessControlConte
xt.java:366)
at java.security.AccessController.checkPermission(AccessController.java:
560)
at java.lang.SecurityManager.checkPermission(SecurityManager.java:549)
at java.lang.SecurityManager.checkLink(SecurityManager.java:835)
at java.lang.Runtime.loadLibrary0(Runtime.java:839)
at java.lang.System.loadLibrary(System.java:1084)
at gnu.io.CommPortIdentifier.<clinit>(CommPortIdentifier.java:83)
... 17 more |
Code qui génère l'erreur :
Code:
1 2 3 4 5 6
| Enumeration<CommPortIdentifier> portEnum =
AccessController.doPrivileged(new PrivilegedAction<Enumeration<CommPortIdentifier>>() {
public Enumeration<CommPortIdentifier> run() {
return CommPortIdentifier.getPortIdentifiers();
}
}); |
Merci pour vos avis éclairés.
Z.