为什么 .类 文件在 .jar 文件中有奇怪的名字?

Why do .classes files have weird-looking names in .jar file?

我使用JD-GUI反编译了一个.jar文件,还有很多名字很奇怪的包,比如a, b, c, d,等等。 类也是如此,所以一些.class文件也被命名为a.classb.class等。

我不认为开发人员命名包或 Java 文件的方式会使他们以后无法识别每个文件的作用。我相信这是因为其他一些技术问题。有人可以清楚这个问题吗?

您反编译的 Jar 可能使用 ProGuard:

进行保护

By default, compiled bytecode still contains a lot of debugging information: source file names, line numbers, field names, method names, argument names, variable names, etc. This information makes it straightforward to decompile the bytecode and reverse-engineer entire programs. Sometimes, this is not desirable. Obfuscators such as ProGuard can remove the debugging information and replace all names by meaningless character sequences, making it much harder to reverse-engineer the code. It further compacts the code as a bonus. The program remains functionally equivalent, except for the class names, method names, and line numbers given in exception stack traces.

仍然可以对程序进行逆向工程,但这样做通常是非法的,然后再使用代码(至少在美国,我唯一有经验的国家),因为它是一种许可违反。使用此类工具的人几乎总是不编写开源软件。