1

我班的代码:

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文件与类在同一个文件夹中

4

2 回答 2

2

HTML 文件与类位于同一文件夹中

那不好。您需要了解小程序元素中的参数是如何工作的。

<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>
于 2013-08-27T16:39:20.883 回答
1

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

于 2013-08-27T16:46:02.643 回答