Java JAR包中的策略文件

Java JAR包中的策略文件,java,jar,rmi,Java,Jar,Rmi,是否有可能从JAR包中读取.policy文件?我发现了这个问题,但这里的链接断开了,我尝试使用下面这样的代码,但它不起作用,我得到了异常(代码下面的异常消息)。我也试过了,结果也一样 java.policy grant codeBase "file:${{java.ext.dirs}}/*" { permission java.security.AllPermission; }; TelnetServer.java package telnetserver; import java.

是否有可能从JAR包中读取.policy文件?我发现了这个问题,但这里的链接断开了,我尝试使用下面这样的代码,但它不起作用,我得到了异常(代码下面的异常消息)。我也试过了,结果也一样

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łapano wyjątek:java.security.AccessControlException:拒绝访问 (“java.net.SocketPermission”“localhost:1087”“侦听,解析”) java.security.AccessControlException:拒绝访问 (“java.net.SocketPermission”“localhost:1087”“侦听,解析”)位于 AccessControlContext.checkPermission(AccessControlContext.java:472) 在 java.security.AccessController.checkPermission(AccessController.java:884) 在 checkPermission(SecurityManager.java:549) 位于java.lang.SecurityManager.checkListen(SecurityManager.java:1131) 位于java.net.ServerSocket.bind(ServerSocket.java:374) ServerSocket.(ServerSocket.java:237)位于 ServerSocket.(ServerSocket.java:128)位于 rmi.transport.proxy.RMIDirectSocketFactory.createServerSocket(RMIDirectSocketFactory.java:45) 在 rmistastersocketfactory.createServerSocket(rmistastersocketfactory.java:345) 在 sun.rmi.transport.tcp.TCPEndpoint.newServerSocket(TCPEndpoint.java:666) 位于sun.rmi.transport.tcp.tcpttransport.listen(tcpttransport.java:330) 在 exportObject(tcpttransport.java:249) 在 exportObject(TCPEndpoint.java:411) 位于sun.rmi.transport.LiveRef.exportObject(LiveRef.java:147) UnicastServerRef.exportObject(UnicastServerRef.java:234) 位于sun.rmi.registry.RegistryImpl.setup(RegistryImpl.java:195) registrympl.(registrympl.java:180)位于 java.rmi.registry.LocateRegistry.createRegistry(LocateRegistry.java:203) 位于telnetserver.telnetserver.main(telnetserver.java:32)


你还没有告诉Java它在罐子里。您在调用
getFile()
时删除了所有这些信息。那么,我该怎么办?呃,不要通过调用
getFile()
删除所有这些信息?您还没有告诉Java它在JAR中。您在调用
getFile()
时删除了所有这些信息。那么,我该怎么办?呃,不要通过调用
getFile()
来删除所有这些信息?