2010-06-10 87 views
1

這讓我感覺很不舒服。我已檢查並重新檢查拼寫和路徑。我嘗試了幾乎所有路徑組合,包括相對路徑,絕對路徑和完整http路徑。我不斷收到以下錯誤嘗試加載Java小程序時:Java Applet部署,ClassNotFoundException(主類)

java.lang.ClassNotFoundException: AppletClient.class 
    at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source) 
    at java.lang.ClassLoader.loadClass(Unknown Source) 
    at java.lang.ClassLoader.loadClass(Unknown Source) 
    at sun.plugin2.applet.Plugin2ClassLoader.loadCode(Unknown Source) 
    at sun.plugin2.applet.Plugin2Manager.createApplet(Unknown Source) 
    at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source) 
    at java.lang.Thread.run(Unknown Source) 
Exception: java.lang.ClassNotFoundException: AppletClient.class 

的HTML用來加載小程序:

<applet width="100" height="100" archive="applet/myapplet.jar, applet/applet_dependency.jar" code="AppletClient.class"> 
    <param value="blahblah" name="username"> 
    <param value="false" name="codebase_lookup"> 
</applet> 

小應用程序是在一個相對目錄,「小程序」,從當前頁面的路徑。我已經解壓縮了jar文件並可以看到AppletClient.class。另外,在項目來源中,拼寫方式(大小寫和全部)。我試過/不帶參數。我已經更改了applet include標籤中的存檔jar的名稱,以查看是否針對錯誤的文件名(同一錯誤)獲取了不同的錯誤。

我已經手工完成大幹快上的罐子,以確保服務器響應請求(它是)。

我曾嘗試與不代碼庫標籤,所有不同品種的路徑(開始於那些越來越壞「幻數」的錯誤)。

我知道,當一個依賴加載失敗這個錯誤有時會彈出,因此它可能會產生誤導,但所有的依賴關係都存在,佔了,並且是可提取通過手動的GET。

在每次嘗試之間,我總是在FireFox中清除緩存。這些問題也在IE8和Chrome中重現。

按我的Java控制檯從瀏覽器,我運行Java插件1.6.0_20。這來自我開發applet的相同機器,它通過Eclipse運行良好。

最後,我踢Fiddler2,我沒有看到的jar文件的任何地方的主機站點是從我的Visual Studio調試器中運行單個請求,所以它在本地主機上運行。但是我看到了對提琴手所有其他資源的請求。只是...沒有罐子。任何地方。我清除了日誌,清除了我的瀏覽器緩存,並執行了ctrl-R刷新。而且,對於Fiddler日誌不是單個Jar請求。

我甚至在頁面加載後的小程序標籤的寫入延遲(與JS),一旦所有的提琴手活動放緩。元素被寫入文檔(並且我可以看到100x100 Java錯誤窗口),但不會在提琴手上顯示單個請求。

有什麼建議,在我爬到角落哭泣自己睡覺之前?

編輯:從Java控制檯,如果我打「L」(EL)「傾銷類加載器列表」,我看到的東西,看起來像這樣:

Live entry: key=http://localhost:55446/BaseWebSite/,http://localhost:55446/BaseWebSite/applet/myappliet.jar, http://localhost:55446/BaseWebSite/applet/applet_dependency.jar, refCount=1, threadGroup=sun.plugin2.applet.Applet2ThreadGroup[name=http://localhost:55446/BaseWebSite/-threadGroup,maxpri=4] 

編輯2:小程序做了一些網絡(Jabber/XMPP),所以我做了一個自簽名證書,看看是否有幫助。獲得關於自簽名證書的提示 - 因此它正在讀取某些內容 - 但仍然無效。這是而不是顯示在Java緩存文件列表中......並且仍然沒有在Fiddler上。

回答

0

原來我的問題其實是問題的一個組合。我會暫時解決一個問題,但由於這不起作用(因爲還有其他問題),我會回頭嘗試另一種方法。

我在這裏嘗試了很多不同的東西,我不確定確切的修復是什麼。但是,我認爲它是什麼

1)由於我的小程序使用網絡組件(Jabber/XMPP),它需要簽名。 2)即使在我的測試早期,我確認了jar文件以正確的方式打包,Applet.class在根目錄下,後來在我的調試中創建了一個NAnt構建腳本,用於簡化構建/簽署/部署過程。該構建腳本打包來自工作目錄的jar,該目錄是而不是應用程序的根目錄。所以,AppletClient.class不再是根目錄,而是嵌套在服務器的子目錄中。

0

我認爲Java插件有自己的緩存,你可能想嘗試並清空。我正在運行Windows,我在我的控制面板中找到它。在常規選項卡中,有一個臨時Internet文件部分,請參閱是否可以在其中找到某些內容?

在設置對話框中,我可以看到緩存的.jar在我的硬盤上的位置,我不得不在幾次手動中對它進行覈對。

此外,請確保通過在控制檯中按x來清除類加載器緩存。

只是爲了確保AppletClient真的在默認的類路徑中,即不在包中?否則,您需要在標記中引用合格的類名(code="your.package.AppletClient")。

UPDATE:

出具體的建議,在這一點上,你可以做什麼,除非你已經是嘗試另一個標記樣式,只是看看有什麼變化。這裏的東西我用:

<object classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93" width="380" height="260"> 
    <param name="code" value="AppletClient" /> 
    <param name="archive" value="applet/myapplet.jar,applet/applet_dependency.jar" /> 
    <comment> 
     <embed 
      code="AppletClient.class" 
      type="application/x-java-applet;version=1.6" 
      archive="applet/myapplet.jar,applet/applet_dependency.jar" 
      width="380" 
      height="260"> 
      <noembed>No Java Support.</noembed> 
     </embed> 
    </comment> 
</object> 
+0

我清除了Java緩存(很好的提示!),但仍然沒有運氣,仍然沒有活動的瓶子的提琴手。不,AppletClient不在類路徑中。 – Matt 2010-06-10 13:17:39

+0

我的意思是不,AppletClient不在包中。它沒有軟件包,位於存檔中列出的第一個jar的根目錄。 – Matt 2010-06-10 14:52:19

+0

謝謝Lauri的幫助。在我的結尾仍然沒有運氣:(我用自簽名證書籤署了代碼,因爲它有一些想要簽名的網絡代碼,我得到關於自簽名證書的提示,所以它看到了很多,但仍然無法加載 – Matt 2010-06-11 18:16:08

相關問題