0

Java 8 Policy 有一个看似奇怪的问题。

我在 Java 7 中使用了以下权限,直到更新 51,它工作正常:

grant { 
    (...)
    java.net.SocketPermission "localhost:1024-", "accept,connect,listen,resolve";
};

但现在我正在检查 Java 8 支持,我得到了这个异常:

Exception in thread "RMI TCP Connection(idle)" java.security.AccessControlException: access denied ("java.net.SocketPermission" "10.1.17.112:55703" "accept,resolve")
at java.security.AccessControlContext.checkPermission(Unknown Source)
at java.security.AccessController.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkPermission(Unknown Source)
at sun.plugin2.applet.AWTAppletSecurityManager.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkAccept(Unknown Source)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.checkAcceptPermission(Unknown Source)
at sun.rmi.transport.tcp.TCPTransport.checkAcceptPermission(Unknown Source)
at sun.rmi.transport.Transport$1.run(Unknown Source)
at sun.rmi.transport.Transport$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.Transport.serviceCall(Unknown Source)
at sun.rmi.transport.tcp.TCPTransport.handleMessages(Unknown Source)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(Unknown Source)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)

运行 IPConfig 显示 10.1.17.122 是我本地机器的 IP:

   Ethernet adapter Local Area Connection:

   IPv4 Address. . . . . . . . . . . : 10.1.17.112
   Subnet Mask . . . . . . . . . . . : 255.255.252.0
   Default Gateway . . . . . . . . . : 10.1.19.254

如果我将权限更改为 127.0.0.1 它也不起作用:

grant { 
    (...)
    java.net.SocketPermission "127.0.0.1:1024-", "accept,connect,listen,resolve";
};

但是,如果我输入我的 IP 地址,一切都会再次正常:

grant { 
    (...)
    java.net.SocketPermission "10.1.17.112:1024-", "accept,connect,listen,resolve";
};

任何想法为什么?

编辑:对我来说,这似乎是 Java 8 中的一个错误,有人可以确认吗?

4

2 回答 2

2

“本地主机”是 127.0.0.1。“10.1.17.112”完全是另外一回事。你很幸运,它曾经工作过。

于 2014-05-19T09:57:59.327 回答
1

我想我找到了我想要的东西:http ://bugs.java.com/bugdatabase/view_bug.do?bug_id=7077696

那里建议的解决方法对我有用。

2011-11-09 变通

运行 -Djava.net.preferIPv4Stack=true

谢谢你的帮助!

于 2014-07-08T12:34:20.920 回答