1

アプレットをコーディングして自分の Web サイトに配置しようとしています。1.4 が最新バージョンだった頃、Borland を使用してずっと前にこれを行ったことを覚えています。もちろん、アプレットタグ(私が現在使用している)を使用しましたが、問題はありませんでした。とにかく、クラス ファイルを httpdocs/ の独自のディレクトリに配置し、次のコードを Web ページで使用しました。

<applet code="wsavatar/WSAvatar" width="425" height="150> Your browser does not support the applet tag. </applet>

ページを読み込もうとすると、次のようになります。

Java Plug-in 1.6.0_17 Using JRE version 1.6.0_17-b04 Java HotSpot(TM) Client VM

java.lang.ClassFormatError: Incompatible magic value 1008813135 in class file   
  wsavatar/WSAvatar
  at java.lang.ClassLoader.defineClass1(Native Method)
  at java.lang.ClassLoader.defineClass(Unknown Source)
  at java.security.SecureClassLoader.defineClass(Unknown Source)
  at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source)
  at java.lang.ClassLoader.loadClass(Unknown Source)
  at java.lang.ClassLoader.loadClass(Unknown Source)
  at sun.plugin2.applet.Plugin2ClassLoader.loadCode(Unknown Source)
  at sun.plugin2.applet.Plugin2Manager.createApplet(Unknown Source)
  at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
  at java.lang.Thread.run(Unknown Source)
Exception: java.lang.ClassFormatError: Incompatible magic value 1008813135
in class file wsavatar/WSAvatar

同じアプレット コードを使用してアプレットをロードするためのクイック ローカル html ファイルを作成しようとしましたが、うまくいきました。私はオンラインで見回し、このエラーに関連するさまざまなことを聞​​いてきましたが、私が見つけたものは何も軽減していないようです. 何か案は?

ベン

4

2 に答える 2

5

マジックナンバーは、クラスファイルの先頭にある4バイトの値(0xCAFEBABE)であり、他の種類のデータではなく、クラスファイルとしてマークされます。

では、どのタイプのファイルにマジックナンバー1008813135がありますか?そのバイトになる16進数では、0x3C、0x21、0x44、0x4Fです。一般的なラテン語のエンコーディングでは文字データとして解釈されます。「<!DO。おそらく「」として継続し<!DOCTYPEます。ここにあるのはHTMLファイルです。これはおそらく壊れたサーバーから返されたエラーページであり、HTTP応答にエラー以外の成功コードが含まれています。

実際に提供されているものを見てください。Webブラウザはおそらくページを表示します。telnet(またはnc)を使用して、HTTP応答を手動で入力することを学ぶ価値があります。HTTPトラフィックを検査するためのさまざまなユーティリティもあります。

于 2009-12-09T08:19:25.573 に答える
3

問題はコードではなく、Web サイトにあるようです。グーグルで調べてみると、エラーは OpenCMS などのシステムで最も頻繁に報告されているようです (特にポート 8080 にある URL の場合)。

したがって、私が想像しているのは、アプレットをロードするためのブラウザーの呼び出しが実際には失敗しているが、404/500 エラーではなくデータを返しているということです。Java VM は、返されたエラー ページをクラス ファイルであるかのように解釈しようとしていますが、結局、有効なクラス ファイルではないようであると不平を言っています。(これは、実際の HTTP エラーをユーザーに返すのではなく、ホームページにリダイレクトするコンテンツ管理システムでよく発生します。)

テストするには、アプレット (アプレットがホストされているページではなく、アプレット自体) への URL を手動でブラウザーに入力して、サーバーが返す内容を確認してください。

于 2009-12-09T06:55:29.640 に答える