我想知道“如何从.class文件中查找类名”。我希望你能尽可能清楚地解释这一点,因为我只知道java的基础知识。
答案 0 :(得分:3)
java类文件是遵循specified format。
的数据结构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]; }
常量池数据条目遵循以下常规specified format,其中tag确定信息的长度。
cp_info {
u1 tag;
u1 info[];
}
除非tag = CONSTANT_Utf8,否则将遵循以下specified format。
CONSTANT_Utf8_info {
u1 tag;
u2 length;
u1 bytes[length];
}
。这可能与文件名有关。
答案 1 :(得分:1)
类名通常(但不总是)是文件的名称。尝试使用以下命令:
javap -public -classpath . FileName
其中“filename”不包含“.class”后缀。
javap 是Java类文件反汇编程序,-public开关将显示公共类和成员。在Java中,类路径是Java运行时将查找类文件的目录。替换“。”对于您感兴趣的文件目录,如果它不在您当前的目录中。
答案 2 :(得分:0)
通常类名是.class之前的名称,因此ClassName.class是约定。