guys, I used a decompiler jd-gui today and found something quite weird to me.
Let’s say I have a jar file, lib.jar, I decompiled it. It came out that there were some class files named like A.class, B.class, a.class, etc, under same package. When I tried to paste the decompiled source files into eclipse project, but IDE said it would not accept A.class and a.class under the same folder. How could it be? I guess no one named his/her class files from a to z. But the decompiler told me so.
Also I tried to import lib.jar in my project, found that I cannot touch any public class or interface under that package where a.class and A.class resides in. No tips came out when I typed into that package, e.g., “import firm.tools.”
Could anyone tell me the reason? Thanks in advance, and happy new year!
This part is likely due to the fact that you’re using a case-insensitive filesystem (e.g. NTFS on Windows). Thus it isn’t possible for the IDE to create distinct files for
A.classanda.classsince the OS views them as equivalent filenames. This is not true for all systems, nor for the Java specification – hence it is possible to define Java classes that differ only in case (though this is not recommended due to the problem you’ve just illustrated).(As for the names themselves, I agree with Chris that this is likely the result of obfuscation.)