java - Java Applet 的 NoClassDefFoundError

标签 java applet noclassdeffounderror

我创建了一个 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

注意到区别了吗?

提示

  1. AutomatedTelnetClient("192.168.1.1") 向我暗示此小程序将尝试跨站点访问。为此,需要对其进行数字签名并受信任。
  2. 在这个世纪不要使用 AWT 组件进行编码。将 Applet 替换为 JApplet
  3. 不要仅仅为了绘制字符串而重写paint(Graphics)!将其添加到文本组件并将该组件添加到小程序。
  4. 但如果它确实需要自定义绘制,请不要在顶级容器中进行。

关于java - Java Applet 的 NoClassDefFoundError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14519443/

相关文章:

java - java线程同步

java - Subclipse 问题 : running . java 文件作为 Java 应用程序

java - 将文件从 JList 拖到 Windows 资源管理器窗口

android - 使用android库时所有R类的java.lang.NoClassDefFoundError

java - 如何替换添加到 ArrayList 中的日期

java - DDD : is accessing repository from aggregate root considered bad practice?

java - Java Applet 中的paint 和draw 方法有什么区别?

java - 在JCIDE调试时安装.cap文件时遇到错误 '6985' '6A88'

java.lang.NoClassDefFoundError : org/springframework/context/support/ClassPathXmlApplicationContext 错误

java - 使用 CreateProcess 从 Win32 C++ 应用程序启动 Java 应用程序时出错