我正在尝试设置一个简单的rmi服务器
import java.net.MalformedURLException;
import java.rmi.*;
import java.rmi.server.*;
public class EmployeeServer extends UnicastRemoteObject implements Employee{
private String name,id;
private int salary;
private static final long serialVersionUID=1L;
public EmployeeServer(String n,String i,int s) throws RemoteException {
super();
name=n;
id=i;
salary=s;
}
public String getName() throws RemoteException {
return name;
}
public String getID() throws RemoteException {
return id;
}
public int getSalary() throws RemoteException {
return salary;
}
public int augmentSalary(int howMuch) throws RemoteException {
if(howMuch>0){
salary+=howMuch;
}
return salary;
}
public static void main(String[] args) throws RemoteException, MalformedURLException, AlreadyBoundException {
System.setSecurityManager(new SecurityManager());
EmployeeServer server=new EmployeeServer("Red","0123",5000);
Naming.rebind("Red", server);
System.out.println("Server Ready!");
}
}
仅使用此代码我就会收到错误
Exception in thread "main" java.security.AccessControlException: access denied ("java.net.SocketPermission" "127.0.0.1:1099" "connect,resolve")
经过大量的谷歌搜索,我终于写了我的政策文件
grant codeBase "file:/Utenti/Super/workspacenew/PDEsercizioStubSkeleton2.0/bin/EmployeeServer.class"
{
permission java.net.SocketPermission "127.0.0.1:1099", "connect, resolve";
};
并将其放在我的项目文件夹“PDEsercizioStubSkeleton2.0”中。 现在我试图将此策略文件包含在我的jvm运行配置中,并将其放入VM参数中:
java -Djava.security.manager -Djava.security.policy=server.policy
然后它给了我“错误:无法找到或加载主类java”。 我发现它只是检查写的第一个单词,因为我用“jaa”修改了“java”并且拼写错误的名字得到了同样的错误。我做错了什么?