字母命名java类文件来自哪里?

时间:2010-12-31 09:30:59

标签: java decompiling

伙计们,我今天使用了一个反编译器jd-gui,发现了一些非常奇怪的东西。

假设我有一个jar文件,lib.jar,我反编译它。结果是在同一个包下有一些名为A.class,B.class,a.class等的类文件。当我试图将反编译的源文件粘贴到eclipse项目中时,但IDE表示它不会接受同一文件夹下的A.class和a.class。怎么会这样?我猜没有人从a到z命名他/她的类文件。但反编译器告诉了我。

我还试图在我的项目中导入lib.jar,发现我无法触及a.class和A.class所在的那个包下的任何公共类或接口。当我输入该包时没有提示,例如,“import firm.tools。”

谁能告诉我原因?在此先感谢,祝新年快乐!

2 个答案:

答案 0 :(得分:5)

您拥有的jar文件可能包含模糊的类文件。混淆的文件具有重命名的标识符,使人们更难理解。 (混淆不只是重命名标识符,但这是混淆通常会做的事情之一。)

答案 1 :(得分:2)

  

但IDE表示它不会接受同一文件夹下的A.class和a.class。

这部分可能是由于您使用的是不区分大小写的文件系统(例如Windows上的NTFS)。因此,IDE无法为A.classa.class创建不同的文件,因为操作系统将它们视为等效的文件名。对于所有系统和Java规范都不是这样 - 因此可能定义仅在大小写方面不同的Java类(尽管由于您刚刚说明的问题而不建议这样做)

(至于名字本身,我同意克里斯的说法,这可能是混淆的结果。)