2012-07-09 12 views
0

我出現以下情況例外,當我嘗試運行小程序:load:class MyApplet not found:java.lang.ClassNotFoundException。爲什麼我得到這個,當類文件在包中?

load: class MyApplet not found. 
java.lang.ClassNotFoundException: MyApplet 
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) 
Caused by: java.net.SocketTimeoutException: Read timed out 
at java.net.SocketInputStream.socketRead0(Native Method) 
at java.net.SocketInputStream.read(Unknown Source) 
at java.net.SocketInputStream.read(Unknown Source) 
at java.io.BufferedInputStream.fill(Unknown Source) 
at java.io.BufferedInputStream.read1(Unknown Source) 
at java.io.BufferedInputStream.read(Unknown Source) 
at sun.net.www.http.HttpClient.parseHTTPHeader(Unknown Source) 
at sun.net.www.http.HttpClient.parseHTTP(Unknown Source) 
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source) 
at java.net.HttpURLConnection.getResponseCode(Unknown Source) 
at sun.plugin2.applet.Applet2ClassLoader.getBytes(Unknown Source) 
at sun.plugin2.applet.Applet2ClassLoader.access$000(Unknown Source) 
at sun.plugin2.applet.Applet2ClassLoader$1.run(Unknown Source) 
at java.security.AccessController.doPrivileged(Native Method) 
... 9 more 
Exception: java.lang.ClassNotFoundException: MyApplet 

applet代碼:

import javax.swing.*; 
import java.awt.*; 

public class MyApplet extends JApplet { 

public JFrame frame; 
public JPanel panel; 
public JButton button; 

public void init() { 
    frame = new JFrame(); 
    panel = new JPanel(); 
    button = new JButton("click me "); 
    panel.setBackground(Color.RED); 
    panel.add(button); 
    frame.add(panel); 
    frame.setSize(300,300); 
    frame.setVisible(true); 
} 
} 

的html代碼:

<applet code="MyApplet" codebase="AppletPackage" archive="JAR.jar" height="800" width="800"> 

JAR.jar文件包含一個包Appletpackage,而該包包含一個名爲MyApplet.class

enter image description here

爲什麼我得到這個異常的類文件? Whare我犯了錯誤嗎?

+0

如果該設置在線公開可用,請提供一個鏈接。 – MvG 2012-07-09 16:09:17

+0

@MvG對不起!不可用 – saplingPro 2012-07-09 16:17:45

回答

2

archive參數相對於參數codebase解析。所以在你的情況下,插件將查找包含在文件AppletPackage/JAR.jar中的文件MyApplet.class

你應該將其更改爲以下:

<applet code="AppletPackage.MyApplet" archive="JAR.jar" height="800" width="800"> 

這將在同一目錄中的HTML文件解析爲AppletPackage/MyApplet.classJAR.jar

+0

但是我得到這個異常:'java.lang.NoClassDefFoundError:AppletPackage/MyApplet(錯誤名稱:MyApplet)' – saplingPro 2012-07-09 16:01:29

+0

檢查您是否可以使用瀏覽器訪問jar文件。確保HTML文件不包含'「設置。編輯瀏覽器的地址欄。用'JAR.jar'替換最後一個'/'後面的部分。如果可行,請使用例如WinRar檢查在該jar中的AppletPackage目錄中是否有文件「MyApplet.class」。我非常期待這些失敗。 – MvG 2012-07-09 16:08:25

+0

JAR.jar可訪問_http:// localhost:8084/poll/JAR.jar_。民意調查是項目的名稱。 AppletPackage包含MyApplet.class – saplingPro 2012-07-09 16:13:33

1

這是爲了解決在評論報告給我的第一個答案錯誤消息的嘗試:

java.lang.NoClassDefFoundError: AppletPackage/MyApplet (wrong name: MyApplet) 

看着the sources,我看到這個「錯名」的錯誤消息是不匹配的指示文件名和類名。你聲稱你的班級在AppletPackage之內,文件名AppletPackage/MyApplet.class適合。但是你上面引述的源代碼不包含線

package AppletPackage; 

您應該添加該行,使類文件包含類的全名。那麼你應該可以加載它。

相關問題