6

こんにちは、今日、Java 用の最初のアプレットを作成しています。サーバーでサブドメインを使用していますが、この非常に奇妙なエラーが発生するため、どうすればよいかわかりません。

サーバーとすべてにjarファイルがありますが、アプレットをロードしようとするたびにこれが発生します。

java.lang.ClassFormatError: クラス ファイル Evolution/EvolutionApplet の互換性のないマジック値 218774561

調査の結果、互換性のないマジック値は、.jar 内で何かが破損していることを意味しているようです。

これがウェブサイトhttp://dementedgames.site88.net/Main.html です。ウェブサイトにあるhtmlコードが必要な場合、jarの名前はEvolutionです。

編集: アプレットは、Evolution.Evolution ではなく Evolution.EvolutionApplet から起動する必要があります。

4

3 に答える 3

14

有効な Java クラスのマジック値0xCAFEBABEは です。これは の 16 進値です3405691582。これは、ファイルの最初の 4 バイトで表されます。しかし218774561、ASCII 文字CRLF<および!(CRLF は改行です) を順番に表すものを取得しています。自分で確認するには、次のコードを実行します。

int magic = 218774561;
ByteBuffer b = ByteBuffer.allocate(4);
b.putInt(magic);
System.out.println(new String(b.array()));

これは、Web サイトによって提供されているアプレットと組み合わされて、<!DOCTYPE>それが HTML ドキュメントであることを示唆する の始まりであることを示唆しています。

したがって、 へのリクエストEvolution.jar実際には HTML ドキュメントを返したようです。/page.htmlブラウザのアドレス バーの現在のリクエスト URI をアプレットの URL を指すように変更すると (たとえば、URL の末尾を に変更すると)、自分で確認できるはずです/Evolution.jar。次に、ブラウザがアプレットをダウンロードしようとしたときに実際に取得したものを確認します。おそらく、単純な HTTP 404 エラー ドキュメントです。

archiveこれを修正するには、属性の URLが正しいことを確認してください。これは、ブラウザのアドレス バーに表示される現在のリクエスト URL に相対的です。

于 2012-04-26T04:22:50.690 に答える
1

元の問題は修正されたようです。Jar はhttp://dementedgames.site88.net/Evolution.jarからダウンロードできます。

アップデート

Evolution.Evolutionクラスはアプレットではないようです!次を使用してコマンドラインから実行します。

java -jar Evolution.jar

(非常に「レトロ」な外観の) フレームを生成します。したがって、このアプレットのナンセンスは忘れて、Java Web Startを使用してリンクからフレームを起動してください。

古い回答

OTOHはClassNotFoundException、(Jarを調べた後)それがそうあるべきだと私に思わせるようになりました:

<html>
<head>
<title>Evolution</title>
</head>
<body bgcolor="#000000" text="#906060">
<center>
<applet code="Evolution.Evolution" archive="Evolution.jar" width="800" height="600">
</applet>
</center>
</body>
</html>

codeこの属性には注目すべき変更が 2 つあります。

  1. .class拡張機能が削除されました。些細なことですが、それを追加することは容認されますが、正しくありません。
  2. Appletクラス名から が削除されました。
于 2012-04-26T05:55:06.260 に答える
0

上記のBalusCはそれを本当によく説明しています。それに加えて、このリンクを確認できます スレッド:互換性のないマジック値 218774561 アプレットのエラー

ur アプレット タグの codebase や code 属性を適切に指定する必要があるようです。

于 2012-04-26T04:32:04.950 に答える