如何解决java.security.AccessControlException

时间:2017-04-17 09:13:41

标签: java rmi

我正在尝试创建一个rmi应用程序:客户端将文件传输到服务器。但是,当运行代码时,我得到安全管理器异常。 这是客户方:

  import java.rmi.Naming;
  import java.rmi.RMISecurityManager;
  import java.util.Scanner;
  public class StartFileClient {
  public static void main(String[] args) {
    if (System.getSecurityManager() == null)
        System.setSecurityManager(new RMISecurityManager());
    try{
        FileClient c=new FileClient("imed");            
        FileServerInt server=(FileServerInt)Naming.lookup("rmi://localhost/abc");
        server.login(c);
        System.out.println("Listening.....");           
        Scanner s=new Scanner(System.in);           
        while(true){
            String line=s.nextLine();
        }
    }catch(Exception e){
        e.printStackTrace();
    }
}   

}

这是服务器端:

 import java.rmi.Naming;
public class StartFileServer {
public static void main(String[] args) {
    // TODO Auto-generated method stub
    try{

        java.rmi.registry.LocateRegistry.createRegistry(1099);

        FileServer fs=new FileServer();
        fs.setFile("itcrowd.avi");          
        Naming.rebind("rmi://localhost/abc", fs);
        System.out.println("File Server is Ready");

    }catch(Exception e){
        e.printStackTrace();
    }
}   

}

另外,我创建了一个文件security.policy

  grant {
        permission java.security.AllPermission;

};

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

显然,您的政策文件尚未找到。您需要通过java.security.policy系统属性指定其位置。

但除非您使用代码库功能,否则请删除安全管理器。