我在运行程序时,在命令行中java -Djava.security.policy=c:\j2sdk1.4\jre\lib\security\java.policy client.TestCLient 时能够运行。可是不写-Djava.security.policy=c:\j2sdk1.4\jre\lib\security\ java.policy ,就会报错“java.security.AccessControlException: access denied (java.net.SocketPermission 127.0.0.1:1099 connect,resolve)”我为什么会这样呢?c:\j2sdk1.4\jre\lib\security\java.policy 系统不是应该会自己找吗?(在环境变量中我也写了JAVA_HOME=c:\j2sdk)
如果想实现不在命令行中指定policy还有什么方法? 听说可以policy文件改名为 ".java.policy " 并放入客户端的主目录下;可是我要这样改名时,系统就说“必须键入文件名”.听说还可以写批处理文件,那么应该怎么写呢?
请大家帮忙解决下,这个问题困扰我好久了!
------解决方案--------------------
这是rmi本身的安全机制问题,由于rmi牵涉到代码下载。所以为了保证代码安全,使用了一个叫java.rmi.RMSecurityManager的安全管理器,而安全管理器是通过安全策略文件进行配置,它是通过命令行传递给java程序的,你的程序中是:-Djava.security.policy=c:\j2sdk1.4\jre\lib\security\java.policy 来实现。只要加载这个文件,至于放在什么地方,什么名字都无所谓,只要你的路径正确,都可以。
------解决方案--------------------
学习 RMI我看满糊涂的
------解决方案--------------------
关注