假设我有一个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。”
谁能告诉我原因?在此先感谢,祝新年快乐!
答案 0 :(得分:5)
您拥有的jar文件可能包含模糊的类文件。混淆的文件具有重命名的标识符,使人们更难理解。 (混淆不只是重命名标识符,但这是混淆通常会做的事情之一。)
答案 1 :(得分:2)
但IDE表示它不会接受同一文件夹下的A.class和a.class。
这部分可能是由于您使用的是不区分大小写的文件系统(例如Windows上的NTFS)。因此,IDE无法为A.class
和a.class
创建不同的文件,因为操作系统将它们视为等效的文件名。对于所有系统和Java规范都不是这样 - 因此可能定义仅在大小写方面不同的Java类(尽管由于您刚刚说明的问题而不建议这样做)
(至于名字本身,我同意克里斯的说法,这可能是混淆的结果。)