【问题标题】:Java RMI java.security.AccessControlException: access deniedJava RMI java.security.AccessControlException:访问被拒绝
【发布时间】:2012-07-15 09:19:42
【问题描述】:

我正在使用 Java RMI 编写客户端-服务器程序,但出现错误:

java.security.AccessControlException: 访问被拒绝 ("java.net.SocketPermission" "127.0.0.1:1099" "connect,resolve")

我的代码如下所示:

package xxx;

import java.rmi.Naming;
import java.rmi.RemoteException;

public class Server extends Engine implements RemoteInterface {

public Server() {
    super();

    if(System.getSecurityManager() == null) {
        System.setSecurityManager(new SecurityManager());
    }

    try {
        Naming.rebind("Test", this);

        System.out.println("Bound in registry!");
    } catch(Exception ex) {
        System.out.println(ex);
    }
}

@Override
public void test() throws RemoteException {
    System.out.println("test() invoked");
}
}

怎么了?

【问题讨论】:

    标签: java rmi


    【解决方案1】:

    我忘记添加注册表和实现 Serializable。问题解决了。我还删除了 SecurityManager。

    【讨论】:

    • 您还忘记了其他几件事。这些遗漏都不会导致这个问题。
    • 好吧,那你错了,因为添加这些解决了问题。
    • 唯一可以解决该问题的方法是删除 SecurityManager 或修复 .policy 文件。
    • 这是我提到的另外两个之外的一个。编辑了帖子。
    • 正如我所说,这就是解决问题的“一个”。添加注册表并实现 Serializable 并没有解决它。我说的没有错。
    【解决方案2】:

    您已经安装了 SecurityManager,但您没有授予自己足够的权限来执行此代码。

    为什么你认为你需要一个 SecurityManager?除非您打算运行上传的代码,否则我会摆脱它

    【讨论】:

      猜你喜欢
      • 2018-05-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-14
      • 2011-01-26
      • 2011-09-04
      • 2013-10-25
      相关资源
      最近更新 更多