我有这个代码,但是当我运行它时,我得到一个例外

时间:2010-03-08 17:12:14

标签: java html

我有这段代码,但是当我运行它时,我得到一个例外:

  

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。

3 个答案:

答案 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>