2010-03-08 17 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> 
相關問題