0

Java 8 ポリシーに関して一見奇妙な問題があります。

51 を更新するまで Java 7 で次のアクセス許可を使用しましたが、正常に機能しました。

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

「localhost」は 127.0.0.1 です。「10.1.17.112」はまったく別のものです。幸運なことに、これまでまったく機能していませんでした。

于 2014-05-19T09:57:59.327 に答える