Java Applet的NoClassDefFoundError

时间:2013-01-25 10:02:30

标签: java applet noclassdeffounderror

我创建了一个Java Applet,它使用了我创建的另一个Java类。 Java类创建到远程设备的Telnet会话(使用包org.apache.commons),Applet调用此类的方法。任何Telnet命令的答案都是作为Applet应在网页中打印的String接收的。这是Applet的代码:

package m2mcom.web;
import m2mcom.entities.AutomatedTelnetClient;
import java.applet.*;
import java.awt.*;

public class Displaytext extends Applet {
    String text;
    public void init() {
        AutomatedTelnetClient telnet = new AutomatedTelnetClient("192.168.1.1");
        String text = telnet.sendCommand("display device");
        telnet.disconnect();
    }   
    public void paint(Graphics g) {
        g.drawString(text,40,20);
    }
}

当我执行.html文件时,我收到此错误消息:

NoClassDefFoundError. DisplayText(wrong name: m2mcom/web/DisplayText)

总之,我不知道我是不是正确安排了文件目录,或者只是无法以这种方式从Applet调用其他方法类。谁能告诉我我做错了什么?

HTML

此HTML已从评论中复制并已格式化。

<HTML>
<HEAD>
</HEAD>
<BODY>
<div>
<APPLET
    CODE="Displaytext.class"
    WIDTH="800"
    HEIGHT="500">
</APPLET>
</div>
</BODY>
</HTML>

1 个答案:

答案 0 :(得分:1)

取类名称的最后部分:

NoClassDefFoundError. DisplayText(wrong name: m2mcom/web/DisplayText)

&安培;

public class Displaytext extends Applet {

我们最终得到这两个(非等效)字符串:

DisplayText
Displaytext

注意区别?

提示

  1. AutomatedTelnetClient("192.168.1.1")告诉我这个小程序将尝试访问跨站点。为此,需要进行数字签名和信任。
  2. 在本千年中不要使用AWT组件进行编码。将Applet替换为JApplet
  3. 为了绘制paint(Graphics),请勿覆盖String!将其添加到文本组件并将组件添加到小程序。
  4. 但如果它确实需要自定义绘画,请不要在顶级容器中进行。