gpt4 book ai didi

java - 这些类如何访问默认包(编译后)?

转载 作者:行者123 更新时间:2023-12-01 23:46:59 25 4
gpt4 key购买 nike

这取自 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 {
...
}

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

最佳答案

This is taken from the source of Minecraft.

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

How does this work?

从根本上来说,事实并非如此。您在 JD-Gui 中查看的代码不是原始源代码 - 它是代表 JD-Gui 能够管理的准确字节码的代码。

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

Let's say I have a folder with a similar setup (default classes that need to be accessed by other packages) and want to compile it with a batch file. What method of compiling could replicate this result?

你不会。您可以使用包设置源代码(就像所有正常的、重要的 Java 代码所做的那样),对其进行编译,然后对字节码进行后处理。

关于java - 这些类如何访问默认包(编译后)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16878114/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com