我有一个使用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中运行该程序,来自工作区目录中的项目。我需要分配哪些权限的想法?
答案 0 :(得分:1)
我有RMISecurityManager
,因为它是一个分布式程序。当我删除了对setSecurityManager
的所有电话时,问题就停止了。我认为System.setSecurityManager(new RMISecurityManager());
没有拿起政策文件。