我有这段代码,但是当我运行它时,我得到一个例外:
java.security.AccessControlException:拒绝访问(java.net.SocketPermission 127.0.0.1:8081 connect,resolve)
这是代码,服务器运行良好,但客户端不起作用。
<OBJECT classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93"
width="615" height="360"
codebase="http://java.sun.com/products/plugin/autodl/jinstall-1_4-windows-i586.cab#Version=1,4,0,mn">
<PARAM name="code" value="client/LlamaChat.class">
<PARAM name="archive" value="LlamaChat.jar">
<PARAM name="type" value="application/x-java-applet;version=1.4">
<PARAM name="scriptable" value="true">
<PARAM name="username" value="[replace with username]">
<PARAM name="port" value="[replace with port]">
<COMMENT>
<EMBED type="application/x-java-applet;version=1.4"
width="615" height="360"
code="client/LlamaChat.class" archive="LlamaChat.jar"
pluginspage="http://java.sun.com/j2se/1.4.1/download.html"
username="nis"
port="8081"
<NOEMBED>
No Java 1.4 plugin
</NOEMBED></EMBED>
</COMMENT>
</OBJECT>
这是所有错误消息:
java.security.AccessControlException: access denied (java.net.SocketPermission 127.0.0.1:8081 connect,resolve)
at java.security.AccessControlContext.checkPermission(Unknown Source)
at java.security.AccessController.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkConnect(Unknown Source)
at sun.plugin2.applet.Applet2SecurityManager.checkConnect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.connect(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.<init>(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketFactoryImpl.createSocket(Unknown Source)
at client.ServerConnection.<init>(Unknown Source)
at client.LlamaChat.connect(Unknown Source)
at client.LlamaChat.init(Unknown Source)
at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
问题是什么以及如何解决这个问题?
我使用的端口是8081。
答案 0 :(得分:1)
这实际上是第三方applet。签署是第三方的责任。然而,我也不确定这是否是由无符号引起的,它会在执行applet之前给出一般错误/警告。例外可能有另一个原因,例如错误的用户名或端口或配置。我只想再次查阅文档,如果徒劳,只需将其报告给responsible vendor。
小程序本身看起来也很古老。针对老式Java 1.4,最后一次更新超过2500天前。 HTML示例还包含一个不推荐使用的事实<embed>
元素。我怀疑供应商是否会回应支持请求。我会找more recent one。我不能直接推荐(我从未使用过任何一种),但我建议您注意维护历史,最后发布日期和可用文档(如何配置/使用它等)。
答案 1 :(得分:0)
小程序可以做什么,不能做什么。已签名的小程序可以执行您为其授予权限的所有内容,或者您必须明确授予小程序(或更具体地说是主机)执行某项操作的权限。打开一个端口(这是我假设您尝试在您的applet代码中执行的操作),这是applet需要执行权限的其中一项。
最好的办法是在applet所在的jar上签名,然后你的浏览器会提示你想要允许的内容。
答案 2 :(得分:0)
您是否正在运行匹配的服务器?
如果您使用了this one之类的示例,请检查您是否正确输入了用户名,端口,网站和位置 - 在链接和代码中,用户名设置了两次,并且未设置网站。端口设置为[replace with port]
,这是不正确的,主机名首先设置为[replace with username]
,这也不正确。
我怀疑第二次设置用户名是应该设置servername的地方,但我对这个applet一无所知。尝试使用此代码,但首先替换[square brackets]
中的所有4个值:
<OBJECT classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93"
width="615" height="360"
codebase="http://java.sun.com/products/plugin/autodl/jinstall-1_4-windows-i586.cab#Version=1,4,0,mn">
<PARAM name="code" value="client/LlamaChat.class">
<PARAM name="archive" value="LlamaChat.jar">
<PARAM name="type" value="application/x-java-applet;version=1.4">
<PARAM name="scriptable" value="true">
<PARAM name="username" value="[replace with username]">
<PARAM name="port" value="[replace with port]">
<COMMENT>
<EMBED type="application/x-java-applet;version=1.4"
width="615" height="360"
code="client/LlamaChat.class" archive="LlamaChat.jar"
pluginspage="http://java.sun.com/j2se/1.4.1/download.html"
site="[replace with site]"
port="[replace with port]"
<NOEMBED>
No Java 1.4 plugin
</NOEMBED></EMBED>
</COMMENT>
</OBJECT>