0
我想動態下載類;下面我寫了相同的代碼。AccessControl異常動態下載.class
public class ClientProg {
public static void main(String[] args) throws ClassNotFoundException, MalformedURLException {
String serverName = "localhost";
int port = Integer.parseInt("3000");
SerialObj so = null;
SecurityManager securityManager = null;
securityManager = System.getSecurityManager();
if(securityManager == null) {
System.setSecurityManager(new SecurityManager());
}
RMIClassLoader.loadClass("http://localhost:80", "SerialObj.class");
try
{
Socket client = new Socket(serverName, port);
ObjectInputStream ois = new ObjectInputStream(client.getInputStream());
so = (SerialObj) ois.readObject();
System.out.println("read object is : " + so.getId() + ", " + so.getName());
client.close();
} catch(IOException e)
{
e.printStackTrace();
}
}
}
基本上我嘗試使用RMIClassLoader獲得類,類位於http服務器中的位置,可以訪問。
以下是安全權限我已授予:
grant {
permission java.security.AllPermission;
};
當我運行這個程序,我得到下面的異常(不顯示完整的堆棧)。
access: access denied ("java.net.SocketPermission" "localhost:80" "connect,resolve")
,這也堆輸出:
Caused by: java.security.AccessControlException: access denied ("java.net.SocketPermission" "localhost:80" "connect,resolve")
我想試用數量到過去,這,沒有成功。
我已經定義了策略文件,不知道其中指定的權限是否足夠? – CuriousMind
你已經寫了一個,但是你沒有定義它到達JVM的位置。 – EJP