Java-разрешения в библиотеках - PullRequest
4 голосов
/ 05 сентября 2011

У меня есть программа, которая использует библиотеку JNA (управляется с помощью maven). Сама программа имеет все разрешения (я получил ошибку FilePermission, изменил файл политики, и теперь я могу читать / писать по желанию). Однако, когда я использую JNA, я получаю следующую ошибку:

Exception in thread "main" java.security.AccessControlException: access denied (java.util.PropertyPermission jna.encoding read)
    at java.security.AccessControlContext.checkPermission(AccessControlContext.java:393)
    at java.security.AccessController.checkPermission(AccessController.java:553)
    at java.lang.SecurityManager.checkPermission(SecurityManager.java:549)
    at java.lang.SecurityManager.checkPropertyAccess(SecurityManager.java:1302)
    at java.lang.System.getProperty(System.java:669)
    at com.sun.jna.Pointer.getString(Pointer.java:682)
    at com.sun.jna.Function.invokeString(Function.java:598)
    at com.sun.jna.Function.invoke(Function.java:356)
    at com.sun.jna.Function.invoke(Function.java:276)
    at com.sun.jna.Library$Handler.invoke(Library.java:216)

Файл моей политики (последний грант obvioulsy не работает):

grant codeBase "file:/home/tm/workspace/-" {
  permission java.security.AllPermission;
};
grant codeBase "file:/home/tm/.m2/repository/net/java/dev/jna/jna/-" {
  permission java.util.PropertyPermission "jna.encoding", "read";
};

Я запускаю программу в eclipse, из проекта в каталоге рабочей области. Любые идеи, какие разрешения мне нужно назначить на что?

1 Ответ

1 голос
/ 21 сентября 2011

У меня было RMISecurityManager s, поскольку это была распределенная программа.Когда я удалил все звонки на setSecurityManager, проблема прекратилась.Я предполагаю, что System.setSecurityManager(new RMISecurityManager()); не берет файл политики.

...