初探RMI之几个常见异常排除

2019-04-14 16:39发布

开发环境
  eclipse java EE IDE,jdk1.6

异常1 找不到类或存根

java.rmi.ServerException: RemoteException occurred in server thread; nested exception is:
    java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is:
    java.lang.ClassNotFoundException: com.zlz.examples.rmi.server.Compute
    ...

解决方案1
  假定无其他代码及部署错误,在示例工程的bin文件夹下启动rmiregistry, 问题解决。

异常2 AccessControlException

java.security.AccessControlException: access denied (java.net.SocketPermission 127.0.0.1:2001 connect,resolve)
    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.lang.SecurityManager.checkConnect(SecurityManager.java:1034)
    at java.net.Socket.connect(Socket.java:513)
    at java.net.Socket.connect(Socket.java:469)
    at java.net.Socket.(Socket.java:366)
    at java.net.Socket.(Socket.java:179)
    ......

policy文件语法不正确,或配置不对,会造成 AccessControlException 异常

server.policy
grant codeBase "file:/ExamplesZLZ/bin/"
{
    permission java.security.AllPermission;
};

codeBase 用来指定代码路径,盘符可省略如果此路径不正确,也会造成上面的异常。