2017-04-17 228 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