NoClassDefFounderror,java

时间:2013-08-27 16:13:35

标签: java applet noclassdeffounderror

我班级的代码:

package overviewPack;

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

public class ButtonScreen extends JApplet implements ActionListener{

    JButton middle = new JButton();
    Container screen = getContentPane();
    public void init(){

        setVisible(true);
        middle.addActionListener(this);
        screen.add(middle);
    }

    public void actionPerformed(ActionEvent event) {
        if (event.getSource() == middle){
            System.out.println("hey");
        }

    }
}

当我尝试使用html运行它时,我收到一个noclassdefFound错误,堆栈跟踪为ButtonScreen(错误的名称:overviewPack ButtonScreen)

这是我的html代码:(我使用括号,以便代码在聊天中显示为代码,而不是成品)。

<HEAD>
<TITLE>
A Simple Program </TITLE>
</HEAD>
<BODY>
Here is the output of my program:
<APPLET CODE="overviewPack.ButtonScreen.class" codebase = "bin" WIDTH=150 HEIGHT=25>
</APPLET>
</BODY>
</HTML>

我为html尝试了许多不同的格式,并查看了许多其他人类似的,有时完全相同的错误,但没有提出给其他人的解决方案。我也在网络的其余部分四处寻找解决方案,但我找不到。

我的所有小程序都会发生此错误,即使是我上面提到的这个非常简单的小程序。

html文件与类

位于同一文件夹中

2 个答案:

答案 0 :(得分:2)

  

HTML文件与类

位于同一文件夹中

这不好。您需要了解applet元素中的参数如何工作。

<APPLET CODE="overviewPack.ButtonScreen.class" codebase="bin" WIDTH=150 HEIGHT=25>

我们假设HTML位于:our.com/applets/applet1.html

codebase = "bin"表示类路径以our.com/applets/bin/开头。

因此,

overviewPack.ButtonScreen.class需要找到:

our.com/applets/bin/overviewPack/ButtonScreen.class

请注意,包overviewPack已成为类文件正确路径的固有部分。 是'错误名称'的来源。 JRE似乎正在搜索HTML的目录,将类定位在同一目录中,然后加载它以发现它在错误的路径中。

代码属性

<APPLET CODE="overviewPack.ButtonScreen.class" codebase="bin" WIDTH=150 HEIGHT=25>

请注意,所需的值是类文件的完全限定名称。它由包名称后跟类名称组成,每个名称用点分隔。例如。

overviewPack.ButtonScreen 

相反
overviewPack.ButtonScreen.class // combination of FQN with file type

overviewPack/ButtonScreen.class // relative file path on server

所以开场APPLET元素最好是:

<APPLET CODE="overviewPack.ButtonScreen" codebase="bin" WIDTH=150 HEIGHT=25>

答案 1 :(得分:1)

有时,code = attribute末尾的.class文件扩展名存在问题。我见过的一些文档说code = attribute有classname,在这种情况下,末尾的.class是错误的。类名是:overviewPack.ButtonScreen,文件名是: ButtonScreen.class