2009-11-24 5 views
3
grant { 
    permission java.io.FilePermission "C:\\class\\*", "read, write"; 
    permission java.lang.RuntimePermission "createClassLoader"; 
}; 

Mon policy.txtgestionnaire de sécurité Java

java.security.AccessControlException: access denied (java.io.FilePermission c:\class 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.checkRead(Unknown Source) 
    at java.io.File.isDirectory(Unknown Source) 
    at java.io.File.toURI(Unknown Source) 
    at loader.Main.main(Main.java:35) 

Mon exception .. ???

Mon appel

String path = "c:\\class\\"; 
String app = "x.MyHTMLPrint"; 


File file = new File(path); 
URL url = file.toURI().toURL(); 
URL[] urls = new URL[]{url}; 

ClassLoader cl = new URLClassLoader(urls); 
Class cls = cl.loadClass(app); 

Dès que je lui donne l'autorisation complète cela fonctionne.

des idées? THX!

+4

Pas si familier avec le fichier de stratégie, mais, il me semble que vous dites que vous pouvez lire n'importe quoi sous C: \ class, mais en essayant d'accéder à C: \ class lui-même. – Yishai

+0

Comment appellez-vous votre programme? – ankon

Répondre

8

Il semble y avoir deux problèmes. Tout d'abord, comme le dit Yishai, File.toURI semble avoir besoin de vérifier que le fichier sans le séparateur de fin est un répertoire. C'est probablement un bug.

Deuxièmement, le caractère générique pour les sous-répertoires récursifs est '-' et non '*'.

donc votre fichier politique doit ressembler à:

grant { 
    permission java.io.FilePermission "C:\\class\\-", "read"; 
    permission java.io.FilePermission "C:\\class", "read"; 
    permission java.lang.RuntimePermission "createClassLoader"; 
}; 

De plus, si vous utilisez URLClassLoader.newInstance, vous n'avez pas besoin createClassLoader autorisations, et vous obtenez une implémentation de chargeur de classe terminée.

Questions connexes