"java.security.AccessControlException:访问被拒绝(“java.net.S

"java.security.AccessControlException: access denied ("java.net.SocketPermission" "www.google.fr:80" "connect,resolve")"

本文关键字:java 拒绝 net quot security AccessControlException 访问      更新时间:2023-09-26

使用我的Java小程序,我运行到www.google.fr的HTTP请求,但浏览器显示:"java.security.AccessControlException:访问被拒绝("java.net.SocketPermission"www.google.fr:80"connect,resolve")"

我用签署了我的小程序

keytool -genkey -alias keyName
keytool -selfcert -alias keyName
jarsigner appletName.jar keyName

有时我会授权小程序执行。但有时未经许可不会出现弹出窗口。

我用加载小程序

function loadApplet() {
    console.log('loadApplet [start]');
    $('#applet').html('<applet name="requestApplet" archive="applet.jar" code="GoogleRequest.class" height="10" width="10"></applet>');
    console.log(document.requestApplet.methodOfApplet()); // <-- Exception
    console.log('loadApplet [finish]');
}

您有什么JRE?我记得一些1.6版本(如果我没记错的话,是.22)在网络方面进行了"安全升级",之后这种奇怪的事情开始发生。

原因是javascript公共的Applet函数无法直接调用JRE的网络功能。您必须以某种方式将Javascript与小程序内的网络调用解耦。

我用一种"消息总线"实现了这一点。Javascript调用Applet公共函数,该函数将"消息"放入内部总线,另一个小程序读取该消息并进行网络调用。它奏效了。