2010-03-08 44 views
0

我有这样的代码,但是当我运行它,我得到一个异常:我有这样的代码,但是当我运行它,我得到一个异常

java.security.AccessControlException:访问被拒绝(java.net.SocketPermission 127.0.0.1:8081连接,解析)

这是代码,服务器运行良好,但客户端不工作。

<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

有些事情Applet可以和不能做什么。签名小程序能够完成您授予他们许可的所有内容,或者您​​必须明确授予小程序(或更具体而言为主机)的权限才能执行特定操作。打开一个端口(这是我认为你正在尝试在你的applet代码中做的事),是applet需要权限执行的那些东西之一。

要做的最好的事情就是在applet所在的jar中签名,然后浏览器会提示你想要什么。

+0

你能告诉我该怎么做吗? – nisnis84 2010-03-08 17:18:47

+0

我如何签署jar文件? – nisnis84 2010-03-08 17:21:07

+0

http://java.sun.com/docs/books/tutorial/deployment/jar/signindex.html – 2010-03-08 17:29:20

1

这实际上是第三方小程序。签名是该第三方的责任。然而,我也不确定这是否由于未签名引起的,它会在执行小程序之前给出一个通用错误/警告。例外可能有其他原因,例如错误的用户名或端口或配置。我只是再次咨询文件,如果徒劳的话,只需将其报告给responsible vendor即可。

该applet本身也看起来很古老。针对古老的Java 1.4,最近一次更新时间超过2500天。 HTML示例还包含一个事实上已弃用的元素<embed>。我怀疑供应商是否会对支持请求做出回应。我会寻找一个more recent one。我不能推荐一个直接的(我从来没有使用过它们),但我会建议注意维护记录,最新发布日期和可用文档(如何配置/使用它等)。

+0

好的,非常感谢! – nisnis84 2010-03-08 17:28:43

0

你有匹配的服务器运行吗?

如果您使用的例子如this one,请检查您是否正确输入了用户名,端口,网站和位置 - 在链接和代码中,用户名设置了两次,网站未设置。端口设置为[replace with port]这是不正确的,并且主机名首先设置为[replace with username]这也不正确。

我怀疑第二次设置用户名是应该设置服务器名的地方,但我对这个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> 
相关问题