0

我创建了一个 Java Applet,它使用了我也创建的另一个 Java 类。Java 类创建到远程设备的 Telnet 会话(使用包 org.apache.commons)和 Applet 调用此类的方法。任何 Telnet 命令的答案都以字符串形式接收,Applet 应将其打印在网页中。这是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>
4

1 回答 1

1

取类名的最后部分:

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

&

public class Displaytext extends Applet {

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

DisplayText
Displaytext

注意到区别了吗?

提示

  1. AutomatedTelnetClient("192.168.1.1")对我来说意味着这个小程序将尝试到达跨站点。为此,它需要经过数字签名和信任。
  2. 不要在这个千年中使用 AWT 组件进行编码。替换AppletJApplet
  3. 不要paint(Graphics)仅仅为了绘制String!将其添加到文本组件并将组件添加到小程序。
  4. 但如果它确实需要自定义绘画,请不要在顶级容器中进行。
于 2013-01-25T10:07:56.140 回答