【发布时间】:2012-08-27 04:22:35
【问题描述】:
我有一个类文件,当我在网站上时,会出现以下消息:
类文件“spectrum”中不兼容的魔法值 1768713317。
这个神奇的值是什么意思?请帮忙:)
【问题讨论】:
-
您在哪个网站上?类文件在网站中的作用是什么?
-
该网站暂时不公开。我可以给你发一封包含网址的电子邮件吗?
标签: java
我有一个类文件,当我在网站上时,会出现以下消息:
类文件“spectrum”中不兼容的魔法值 1768713317。
这个神奇的值是什么意思?请帮忙:)
【问题讨论】:
标签: java
.class 文件(已编译的 Java 二进制文件)的前四个字节应该是 0xCAFEBABE - 所谓的magic value。
在您的情况下,这些是 ASCII 格式的 1768713317 或 0x696C6C65 或 "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读取一个文件并且magic number无效时它不会执行它。
【讨论】: