java中socket被拒绝,java - 例外:访问被拒绝(“ java.net.SocketPermission”“ localhost:80”“ listen,resolve”) - 堆栈内存溢...

将Eclipse Kepler(Windows 7)用于一个在localhost端口80上打开ServerSocket的项目。

我将安全管理器与位于以下位置的策略文件一起使用:

C:\Users\John\Developpement\workspace\security\my.policy

在Eclipse中,对于项目启动配置属性,对于VM参数:

-Djava.security.manager

-Djava.security.policy=${workspace_loc}/security/my.policy

执行的bin文件是(我在Eclipse中使用单独的源文件夹和输出文件夹):

C:\Users\John\Developpement\workspace\SocketApps\bin\TinyHttpd.class

在my.policy :

grant codeBase "file:\C:\Users\John\Developpement\workspace\SocketApps\bin\-" {

permission java.net.SocketPermission "localhost:80", "listen,resolve";

};

从Eclipse运行时:

Exception in thread "main" java.security.AccessControlException: access denied ("java.net.SocketPermission" "localhost:80" "listen,resolve")

at java.security.AccessControlContext.checkPermission(AccessControlContext.java:372)

at java.security.AccessController.checkPermission(AccessController.java:559)

at java.lang.SecurityManager.checkPermission(SecurityManager.java:549)

at java.lang.SecurityManager.checkListen(SecurityManager.java:1134)

at java.net.ServerSocket.bind(ServerSocket.java:375)

at java.net.ServerSocket.(ServerSocket.java:237)

at java.net.ServerSocket.(ServerSocket.java:128)

at TinyHttpd.main(TinyHttpd.java:35)

到达代码时:

ServerSocket ss = new ServerSocket(80));

如果我删除codeBase过滤器:

grant {

permission java.net.SocketPermission "localhost:80", "listen,resolve";

};

问题消失了,所以我想这就是codeBase表示错误的方式。

我已经尝试过针对该问题提出的解决方案,但是它不起作用。 你能帮助我吗?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值