库中的java权限

时间:2011-09-05 14:47:48

标签: java security maven jna

我有一个使用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 个答案:

答案 0 :(得分:1)

我有RMISecurityManager,因为它是一个分布式程序。当我删除了对setSecurityManager的所有电话时,问题就停止了。我认为System.setSecurityManager(new RMISecurityManager());没有拿起政策文件。