0

私も作成した別の Java クラスを利用する Java アプレットを作成しました。Java クラスはリモート デバイスへの Telnet セッションを作成し (パッケージ org.apache.commons を使用)、アプレットはこのクラスのメソッドを呼び出します。Telnet コマンドへの応答は、アプレットが Web ページに出力する文字列として受信されます。これはアプレットのコードです:

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)

結論として、ファイル ディレクトリを適切に配置していないのか、単にこの方法でアプレットから他のメソッド クラスを呼び出すことができないのかはわかりません。誰が私が間違っているのか教えてもらえますか?

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 {

そして、次の2つの(同等ではない)文字列になります。

DisplayText
Displaytext

違いに気づきましたか?

チップ

  1. AutomatedTelnetClient("192.168.1.1")このアプレットがクロスサイトに到達しようとすることを意味します。そのためには、デジタル署名され、信頼されている必要があります。
  2. このミレニアムでは、AWTコンポーネントを使用してコーディングしないでください。に置き換えAppletますJApplet
  3. paint(Graphics)を描画するためだけにオーバーライドしないでください。Stringそれをテキストコンポーネントに追加し、コンポーネントをアプレットに追加します。
  4. ただし、実際にカスタムペイントが必要な場合は、トップレベルのコンテナでペイントしないでください。
于 2013-01-25T10:07:56.140 に答える