簡體   English   中英

負載:找不到類MyApplet:java.lang.ClassNotFoundException。 包中有類文件時,為什么會得到這個?

[英]load: class MyApplet not found : java.lang.ClassNotFoundException. Why am i getting this,when the class file is there in the package?

當我嘗試運行小程序時,出現以下異常:

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

小程序代碼:

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的類文件。

在此處輸入圖片說明

為什么會出現此異常? 我弄錯了嗎?

相對於codebase參數,解析了archive參數。 因此,在您的情況下,插件將查找文件AppletPackage/JAR.jar包含的MyApplet.class文件。

您應該將其更改為以下內容:

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

這將解析為JAR.jar中與HTML文件位於同一目錄中的JAR.jar AppletPackage/MyApplet.class

這是嘗試解決在對第一個答案的評論中報告的錯誤消息:

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

從源頭上看,我看到此“錯誤名稱”錯誤消息表明文件名和類名不匹配。 您聲稱您的類在AppletPackage ,並且文件名AppletPackage/MyApplet.class可以滿足要求。 但是您上面引用的源代碼中沒有一行

package AppletPackage;

您應該添加該行,以便類文件包含該類的完全限定名稱。 然后,您應該能夠加載它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM