2011-09-05 6 views
4

나는 (Maven으로 관리되는) JNA 라이브러리를 사용하는 프로그램을 가지고있다. 프로그램 자체에는 모든 권한이 있습니다 (나는 FilePermission 오류가 발생하고 정책 파일을 변경 했으므로 이제는 읽고 쓸 수 있음).라이브러리의 자바 사용 권한

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"; 
}; 

나는 일식에서 프로그램을 실행하는거야 내가 JNA를 사용할 때, 나는 다음과 같은 오류가 발생합니다 작업 공간 디렉토리의 프로젝트에서 가져옵니다. 어떤 아이디어를 내가 무엇에 배정해야합니까?

답변

1

나는 분산 된 프로그램 이었기 때문에 RMISecurityManager을 제자리에 두었습니다. setSecurityManager에 대한 모든 통화를 제거 할 때 문제가 중지되었습니다. System.setSecurityManager(new RMISecurityManager());이 정책 파일을 선택하지 않는다고 가정합니다.