我用notepad ++打开一个minecraft类文件夹。但每当我打开它时,它只有一堆盒子,表示Nul,DC1,SO,SOH,FF,STX等等...在指南上我看到类文件打开很好,我做错了什么? / p>
答案 0 :(得分:2)
您正在尝试编辑已编译的 Java类。
它不是文本文件,因此您无法使用文本编辑器对其进行编辑。你想要一个.java
文件,我不相信Minecraft是开源的。
再次检查您的指南,您可能偏离了他们打算引导您的路径。
答案 1 :(得分:1)
如果文件仍然是编译的,你无法查看该文件的来源,你必须将类文件反编译为java文件,然后你可以用notepad / eclipse读取文件,有一个程序是人们反编译的我的可以编辑它的Minecraft源,它叫做mcp
http://mcp.ocean-labs.de/index.php/MCP_Releases
只需下载此内容并按照您的意愿继续,然后您就可以自由编辑代码
答案 2 :(得分:0)
如果您想按原样打开类文件,请使用任何二进制编辑器。 ghex是个不错的选择。您可以这样做:
ghex MyClass.class
javap是一个内置工具,用于反汇编java类文件。这是一个示例:
javap -v MyClass.class
这将为您提供有关类的更多信息,其字节代码,甚至是有关其工作的解释
用于Java类文件反编译的另一个很棒的工具是CFR:http://www.benf.org/other/cfr/ 示例:
java -jar cfr.jar MyClass.class
来源:
import java.math.BigInteger;
import java.util.stream.Stream;
public class MyClass {
public static void main(String[] args) {
System.out.println(
Stream.iterate(
new BigInteger[]{BigInteger.ZERO, BigInteger.ONE},
n -> new BigInteger[]{n[1], n[0].add(n[1])}
)
.limit(1001)
.skip(1000)
.findFirst()
.get()[1]
);
}
}
CFR输出:
import java.io.PrintStream;
import java.math.BigInteger;
import java.util.Optional;
import java.util.stream.Stream;
public class MyClass {
public static void main(String[] arrstring) {
System.out.println(Stream.iterate(new BigInteger[]{BigInteger.ZERO, BigInteger.ONE}, arrbigInteger -> new BigInteger[]{arrbigInteger[1], arrbigInteger[0].add(arrbigInteger[1])}).limit(1001L).skip(1000L).findFirst().get()[1]);
}
}