我班级的代码:
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文件与类
位于同一文件夹中答案 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