簡體   English   中英

這些類如何訪問默認程序包(后編譯)?

[英]How are these classes able to access the default package (post-compile)?

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

這是如何運作的? 假設我有一個具有類似設置的文件夾(默認類需要其他軟件包訪問),並希望使用批處理文件進行編譯。 哪種編譯方法可以復制此結果?

這是從《我的世界》中獲取的。

我不這么認為。 (編輯:對該問題進行了編輯,以使其成為“字節碼”-這沒有多大意義,因為字節碼不是Java源代碼。無論如何...)

這是如何運作的?

從根本上講,它不是。 您在JD-Gui中查看的代碼不是原始源代碼-它是代表JD-Gui能夠准確管理的字節碼的代碼。

我強烈懷疑原始源代碼確實使用了程序包,但是隨后使用某種混淆器來重命名這些類並將它們放在默認程序包中。 我強烈懷疑這不是留下有效字節碼的唯一更改,而該字節碼實際上不能直接從有效源代碼進行編譯。 (例如,我強烈懷疑有些方法名稱在字節碼中有效,但在源代碼中無效。)

假設我有一個具有類似設置的文件夾(默認類需要其他軟件包訪問),並希望使用批處理文件進行編譯。 哪種編譯方法可以復制此結果?

你不會的 您將使用軟件包設置源代碼(就像所有理智的,平凡的Java代碼一樣),對其進行編譯,然后對字節碼進行后處理。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM