是否有可能从JAR包中读取.policy文件?我发现this问题,但这里的链接已损坏,我尝试使用下面的代码,但它不起作用,我有异常(代码下面的异常消息)。我也尝试了this,结果相同
的java.policy
grant codeBase "file:${{java.ext.dirs}}/*" {
permission java.security.AllPermission;
};
TelnetServer.java
package telnetserver;
import java.rmi.Naming;
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
import java.rmi.server.UnicastRemoteObject;
/**
*
* @author User
*/
public class TelnetServer extends UnicastRemoteObject implements RmiServer{
private static final long serialVersionUID = 1L;
public TelnetServer() throws RemoteException {
super();
}
public static void main(String[] args) {
try {
TelnetServer ts = new TelnetServer();
String plik = ts.getClass().getResource("java.policy").getFile();
System.out.println(plik);
System.setProperty("java.security.policy",plik);
System.setSecurityManager(new java.rmi.RMISecurityManager());
LocateRegistry.createRegistry(1087);
Naming.rebind("//localhost:1087/TelnetServer", new TelnetServer());
System.err.println("Serwer działa!");
} catch (Exception e) {
System.err.println("Złapano wyjątek: " + e.toString());
e.printStackTrace();
}
}
@Override
public String execute(String login, String haslo, String cmd) throws RemoteException {
return "Działa";
}
}
异常
运行: /C:/Users/User/Documents/NetBeansProjects/TelnetServer/build/classes/telnetserver/java.policy Złapanoyjjątek:java.security.AccessControlException:访问被拒绝 (“java.net.SocketPermission”“localhost:1087”“listen,resolve”) java.security.AccessControlException:访问被拒绝 (“java.net.SocketPermission”“localhost:1087”“listen,resolve”)at java.security.AccessControlContext.checkPermission(AccessControlContext.java:472) 在 java.security.AccessController.checkPermission(AccessController.java:884) 在 java.lang.SecurityManager.checkPermission(SecurityManager.java:549) 在java.lang.SecurityManager.checkListen(SecurityManager.java:1131) 在java.net.ServerSocket.bind(ServerSocket.java:374)at java.net.ServerSocket。(ServerSocket.java:237)at java.net.ServerSocket。(ServerSocket.java:128)at sun.rmi.transport.proxy.RMIDirectSocketFactory.createServerSocket(RMIDirectSocketFactory.java:45) 在 sun.rmi.transport.proxy.RMIMasterSocketFactory.createServerSocket(RMIMasterSocketFactory.java:345) 在 sun.rmi.transport.tcp.TCPEndpoint.newServerSocket(TCPEndpoint.java:666) at sun.rmi.transport.tcp.TCPTransport.listen(TCPTransport.java:330) 在 sun.rmi.transport.tcp.TCPTransport.exportObject(TCPTransport.java:249) 在 sun.rmi.transport.tcp.TCPEndpoint.exportObject(TCPEndpoint.java:411) 在sun.rmi.transport.LiveRef.exportObject(LiveRef.java:147)at sun.rmi.server.UnicastServerRef.exportObject(UnicastServerRef.java:234) 在sun.rmi.registry.RegistryImpl.setup(RegistryImpl.java:195)at sun.rmi.registry.RegistryImpl。(RegistryImpl.java:180)at java.rmi.registry.LocateRegistry.createRegistry(LocateRegistry.java:203) 在telnetserver.TelnetServer.main(TelnetServer.java:32)