gpt4 book ai didi

java - 动态下载 .class 时出现 AccessControl 异常

转载 作者:行者123 更新时间:2023-12-01 11:07:18 32 4
gpt4 key购买 nike

我想动态下载类;下面我编写了相同的代码。

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")

我尝试了多次尝试来解决这个问题,但没有成功。

最佳答案

如果要安装SecurityManager,则需要定义java.security.policy 文件。否则您将无法执行任何操作。请参阅 Oracle RMI 教程。

关于java - 动态下载 .class 时出现 AccessControl 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32808987/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com