クラスファイルがあり、Webサイトにアクセスすると、次のメッセージが表示されます。
クラスファイル「spectrum」の互換性のないマジック値1768713317。
この魔法の値はどういう意味ですか?助けてください :)
クラスファイルがあり、Webサイトにアクセスすると、次のメッセージが表示されます。
クラスファイル「spectrum」の互換性のないマジック値1768713317。
この魔法の値はどういう意味ですか?助けてください :)
.class
ファイル (コンパイルされた Java バイナリ)の最初の 4 バイトは0xCAFEBABE
、いわゆるマジック値である必要があります。
あなたの場合、これらはASCII の1768713317
or0x696C6C65
または"ille"
( ille...gal ?) です。ほとんどの場合、一部の JVM はこれがバイトコードであると考えてファイルを開こうとしますが、実際にはテキスト ファイルです。おそらくクラスはダウンロードされるはずでしたが、サーバーは代わりにエラーを返しましたか?
マジック ナンバーは、コンパイルされた各 Java クラスの最初の 4 バイトです。これは、コンパイルされた Java クラスの構造です。
ClassFile {
u4 magic;
u2 minor_version;
u2 major_version;
u2 constant_pool_count;
cp_info constant_pool[constant_pool_count-1];
u2 access_flags;
u2 this_class;
u2 super_class;
u2 interfaces_count;
u2 interfaces[interfaces_count];
u2 fields_count;
field_info fields[fields_count];
u2 methods_count;
method_info methods[methods_count];
u2 attributes_count;
attribute_info attributes[attributes_count];
}
'magic' は常に次の値に等しくなければなりません: 0xCAFEBABE
. JVM に「やあ、私は Java クラスです。私のコードを実行できます!」と伝えます。JVM がファイルを読み取り、マジック ナンバーが有効でない場合、そのファイルは実行されません。