2017-04-17 212 views
-1

我想创建一个rmi应用程序:客户端传输文件到服务器。但是,运行代码时,我得到安全管理器异常。 下面是客户端:如何解决java.security.AccessControlException

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

显然你的政策文件没有被发现。您需要通过java.security.policy系统属性指定其位置。

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

+0

我把策略文件放在我的文件夹包中。 –

+0

我删除它。但我得到了同样的错误:访问被拒绝(“java.net.SocketPermission”“127.0.0.1:1099”“连接,解决”).. –

+0

把政策文件放入你的'文件夹包'不会完成任何事情,也不会删除它。你似乎没有真正阅读我的答案。 – EJP