在我的自定義數據集中,我使用RMI服務器中的構造函數來創建我的類的新實例。反射AccessControlException
Constructor<?> constructor = dynTable.getDeclaredConstructor(Class.class);
constructor.setAccessible(true); // <-- Exception here
... = constructor.newInstance(type);
constructor.setAccessible(false);
但是,如果我設置了SecurityManager
,則會在下面引發預期。
java.security.AccessControlException: access denied ("java.lang.reflect.ReflectPermission" "suppressAccessChecks")
at java.security.AccessControlContext.checkPermission(AccessControlContext.java:457)
at java.security.AccessController.checkPermission(AccessController.java:884)
at java.lang.SecurityManager.checkPermission(SecurityManager.java:549)
at java.lang.reflect.AccessibleObject.setAccessible(AccessibleObject.java:128)
at net.sviglas.meridian.task.DefaultDatasetConstructor$1.constructDataset(DefaultDatasetConstructor.java:45)
...
服務器端和客戶端的策略文件:
grant {
permission java.security.AllPermission;
};
我給了允許的一切,但我仍然收到此安全異常。你知道爲什麼嗎?
請勿對不是代碼的文本使用代碼格式。 – EJP