0

这取自 Minecraft 的字节码。大多数 jar 的类都在默认包中,但是还有另一个包“net.minecraft.client”,它具有运行游戏循环、设置 OpenGL 等的主类(Minecraft.class)。我不'没有源代码,但是如果我在 JD-Gui 中打开 Minecraft.class,它具有以下导入设置:

package net.minecraft.client;

import aaa;
import aai;
import ajq;
import ajv;
import akf;
import aki;
import aqx;
import aqz;
import ara;
import arb;
... (many more classes from the default package)

public abstract class Minecraft implements Runnable, mc {
...
}

这是如何运作的?假设我有一个具有类似设置的文件夹(其他包需要访问的默认类),并希望使用批处理文件对其进行编译。什么编译方法可以复制这个结果?

4

1 回答 1

3

这取自 Minecraft 的源代码。

我不这么认为。(编辑:这个问题被编辑成这个“字节码” - 这没有多大意义,因为字节码不是Java源代码。无论如何......)

这是如何运作的?

它没有,从根本上说。您在 JD-Gui 中查看的代码不是原始源代码 - 它是 JD-Gui 能够管理的准确表示字节码的代码。

我强烈怀疑原始源代码确实使用包,但随后使用某种混淆器来重命名类并将它们放入默认包中。我强烈怀疑这不是唯一一种留下有效字节码的更改,而这些字节码实际上不能直接从有效源代码编译。(例如,我强烈怀疑存在在字节码中有效但在源代码中无效的方法名称。)

假设我有一个具有类似设置的文件夹(其他包需要访问的默认类),并希望使用批处理文件对其进行编译。什么编译方法可以复制这个结果?

你不会的。您将使用包设置源代码(就像所有理智的、非平凡的 Java 代码一样),编译它,然后对字节码进行后处理。

于 2013-06-01T23:06:22.067 回答