我无法让 RMI 安全策略正常工作。我在服务器和客户端上都有一个 .policy 文件,每个文件都运行一个 SecurityManager。
当我尝试运行客户端时,它失败了。我的政策文件授予一切atm。内容如下:
grant { permission java.security.AllPermission };
我的 JAR 文件的根目录中有文件 client.policy(我也尝试使用 jar 外部的策略文件运行它)。然后我用这个运行客户端:
java -jar PagePlanner.jar -Djava.security.policy=client.policy -Djava.rmi.codebase=http://192.168.0.88:2077/home/me/NetbeansProjects/PageServer/dist/PageServer.jar -Djava.security.debug=access
指定我的策略文件和我的代码库的路径。我不确定这些是否正确。当我在某处阅读时,我还尝试设置调试开关,它应该会给我关于出了什么问题的额外信息,但它似乎没有什么不同。这是我运行客户端时的输出:
Exception in thread "main" java.security.AccessControlException: access denied (java.awt.AWTPermission setWindowAlwaysOnTop)
at java.security.AccessControlContext.checkPermission(AccessControlContext.java:323)
at java.security.AccessController.checkPermission(AccessController.java:546)
at java.lang.SecurityManager.checkPermission(SecurityManager.java:532)
at java.awt.Window.setAlwaysOnTop(Window.java:2038)
at gui.LoginForm.<init>(LoginForm.java:59)
at main.Main.main(Main.java:21)
从那一刻起,客户端就挂了。有什么想法我在这里做错了吗?服务器端的策略设置几乎相同。如果有帮助,我可以发布详细信息。
干杯。