我创建了一个 Java Applet,它使用了我也创建的另一个 Java 类。 Java 类创建到远程设备的 Telnet session (使用包 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>
最佳答案
取类名的最后部分:
NoClassDefFoundError. DisplayText(wrong name: m2mcom/web/DisplayText)
&
public class Displaytext extends Applet {
我们最终得到这两个(不等价)字符串:
DisplayText
Displaytext
注意到区别了吗?
提示
AutomatedTelnetClient("192.168.1.1")
向我暗示此小程序将尝试跨站点访问。为此,需要对其进行数字签名并受信任。- 在这个世纪不要使用 AWT 组件进行编码。将
Applet
替换为JApplet
。 - 不要仅仅为了绘制
字符串
而重写paint(Graphics)
!将其添加到文本组件并将该组件添加到小程序。 - 但如果它确实需要自定义绘制,请不要在顶级容器中进行。
关于java - Java Applet 的 NoClassDefFoundError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14519443/