2011-01-24 77 views
6

我使用Eclipse IDE創建了一個applet程序。現在我正在創建的.html如下文件:錯誤:java.lang.NoClassDefFoundError:Chase(錯誤的名稱:pong/Chase)

<html> 
<APPLET CODE="Chase.class" width=500 height=400> 
</APPLET> 
</html> 

時,即時通訊執行此文件中的錯誤即時得到的是:

java.lang.NoClassDefFoundError: Chase (wrong name: pong/Chase) 
at java.lang.ClassLoader.defineClass1(Native Method) 
at java.lang.ClassLoader.defineClass(Unknown Source) 
at java.security.SecureClassLoader.defineClass(Unknown Source) 
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) 

在Eclipse IDE中創建新項目,並打包成節目「傍」夾。

任何人都可以解釋爲什麼這個錯誤發生?

編輯:

添加幾Chase.java行代碼,進行澄清。這是簡單的小程序:

package pong; 


import java.applet.*; 
import java.awt.*; 
import java.awt.event.*; 
import java.util.Random; 



public class Chase extends Applet implements Runnable 
{ ... } 
+0

http://stackoverflow.com/questions/3298988/java-lang-noclassdeffounderror-when-trying-to-embed-an-applet – 2011-01-24 09:26:14

回答

8

在你的類路徑中沒有類名Chase

wrong name指定指定包可能會出現類名錯誤。

,如果你的類聲明package例如

package a; 
public class MyApplet extends Applet{} 

然後在HTML給a.MyApplet

更新你的情況

似乎

<APPLET CODE="pong.Chase.class" width=500 height=400>

也目錄結構應該是

- - - - - 
     | 
     |-your html file 
     |-pong folder 
      | 
      |- Chases.class 

會做,如果包的名稱是pong

+0

試圖使用幫助。錯誤仍然是:oad:沒有找到class pong/Chase.class。 拋出java.lang.ClassNotFoundException:pong.Chase.class \t在sun.plugin2.applet.Applet2ClassLoader.findClass(未知來源) \t在java.lang.ClassLoader.loadClass(未知來源) \t在java.lang.ClassLoader中.loadClass(未知來源) \t at sun.plugin2.applet.Plugin2ClassLoader.loadCode(未知來源)....等 – GamDroid 2011-01-24 09:43:09

+0

檢查更新.................... ..... – 2011-01-24 09:45:46

0

你忘了包的一部分在你的applet標記:

<APPLET CODE="pong.Chase.class" width=500 height=400> 
</APPLET> 
2

我覺得現在的問題是基本上爲@Jigar Joshi指出,但略有起皺。我認爲你有一個FQN是「pong.Chase」的類,但是你已經設置了類路徑,以便包含「Chase.class」的目錄位於類路徑中。然後,你已經告訴小程序加載器尋找一個類爲「Chase.class」。

類加載器找到了字節碼文件,但是當它試圖加載它時,它已經注意到類FQN是「pong.Chase」而不是「Chase」......正如你給出的名字推斷的那樣。 Ergo ... a NoClassDefFoundError,消息告訴你類名不正確

解決辦法是確保在「傍」目錄的父目錄是在classpath中,並使用:

<APPLET CODE="pong.Chase.class" width=500 height=400></APPLET> 

或者 - 使用codeBase屬性。

或者2 - 在Java類中刪除package聲明。

或者3 - 使用<object>元素。 <applet>元素已棄用。

參考:http://www.w3.org/TR/html401/struct/objects.html