2011-12-12 68 views
2

對不起這個問題,但我是Java的新手。我試圖尋找類似的問題,我找到了一些答案,但沒有在我的情況下工作,所以這裏去:嘗試從.jar文件加載小程序時發生java.lang.ClassNotFoundException

我想加載一個Java小程序在網頁上。該applet應該從.jar文件(UCFApplet.jar)加載,但無論如何我都無法加載它。

這裏的applet的HTML:

<applet id="UCFApplet" height="200" width="200" 
    code="com.fujitsu.test.applet.UCFApplet" 
    archive="UCFApplet.jar"> 
</applet> 

的jar文件在服務器上,就比試圖加載它的HTML文件相同的文件夾。在jar文件中,com/fujitsu/test/applet文件夾中有一個UCFApplet.class文件。

,我發現了Java控制檯上的錯誤是:

Java Plug-in 1.6.0_29 
Using JRE version 1.6.0_29-b11 Java HotSpot(TM) Client VM 
User home directory = C:\Users\PTMAIAJ 
---------------------------------------------------- 
c: clear console window 
f: finalize objects on finalization queue 
g: garbage collect 
h: display this help message 
l: dump classloader list 
m: print memory usage 
o: trigger logging 
q: hide console 
r: reload policy configuration 
s: dump system and deployment properties 
t: dump thread list 
v: dump thread stack 
x: clear classloader cache 
0-5: set trace level to <n> 
---------------------------------------------------- 


load: class com.fujitsu.test.applet.UCFApplet not found. 
java.lang.ClassNotFoundException: com.fujitsu.test.applet.UCFApplet 
    at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source) 
    at sun.plugin2.applet.Plugin2ClassLoader.loadClass0(Unknown Source) 
    at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source) 
    at sun.plugin2.applet.Plugin2ClassLoader.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: com.fujitsu.test.applet.UCFApplet 

正如你所看到的,我使用的是JRE 1.6.0_29建設11個,其中,從我得到的甲骨文頁面,是最新版本。這發生在所有瀏覽器(IE 9,FF,Chrome)上。

我懷疑它可能與無法訪問.jar文件有關,因爲如果我將html代碼更改爲諸如archive =「thisFileDoesNotExist.jar」這樣的虛擬名稱,它會給我帶來同樣的錯誤。但我真的不知道應該放在那裏才能使它工作。

任何關於我可以做錯什麼的想法?

謝謝你,最好的問候,

若昂·馬亞

+0

刪除所有的COM ...,只是把唯一碼=「UCFApplet」 –

+0

已經嘗試過,並沒有奏效。其實,我試圖代碼= 「UCFApplet」,代碼=「UCFApplet.class」,代碼=「com.fujitsu.test.applet.UCFApplet」,代碼=「com.fujitsu.test.applet.UCFApplet.class」。沒有工作......我總是遇到同樣的問題。有趣的是,該小程序在Eclipse上工作,但在網頁上,它給出了上述例外...... :( –

+0

任何機會,你找到這個解決方案? –

回答

4

你的描述似乎是正確的,那麼請嘗試以下操作。

首先檢查瀏覽器是否可以下載jar。在瀏覽器中輸入jar文件的直接URL。例如,如果你的HTML可以通過鍵入

http://localhost/myapp/mypage.html

http://localhost/myapp/UCFApplet.jar

如果你可以下載JAR進行訪問,這是等同於你的JAR繼續。

檢查罐子本身。類型在命令行

jar vft UCFApplet.jar

和看到輸出。你應該能夠找到你的類:

/com/fujitsu/test/applet/UCFApplet.class

BTW你知道applet標記已被棄用,而不是由Opera和Chrome的支持?要支持所有瀏覽器,您應該使用標記object

+0

嗨,感謝您的答覆。我可以donwload jar文件,當我做「jar vft」時,我可以看到我的課程。感謝標記的提示。語法與applet標記相同嗎? –

+0

我遇到了同樣的問題,並且類是它應該在的地方但是applet仍然會給出相同的錯誤,我應該嘗試將項目導出爲可運行的jar嗎?我的印象是不適用於applet,但可能是錯誤的。 –

3

嘗試在java控制面板中啓用跟蹤。然後,它會產生以下路徑中的日誌文件,可以幫助:

%USERPROFILE%\AppData\LocalLow\sun\java\Deployment\log 

在我來說,我有一個錯誤,只有當我打開追蹤出現,並呈現爲一個簡單的「ClassNotFoundException的」:

java.util.zip.ZipException: duplicate entry: META-INF/LICENSE.txt 

小應用程序加載程序拒絕該jar,因爲zip文件有重複的文件條目。奇怪appletviewer.exe能夠加載和運行這個罐子罰款。

相關問題