如何用notepad ++打开一个类文件?

时间:2012-02-05 07:34:39

标签: class notepad++ minecraft

我用notepad ++打开一个minecraft类文件夹。但每当我打开它时,它只有一堆盒子,表示Nul,DC1,SO,SOH,FF,STX等等...在指南上我看到类文件打开很好,我做错了什么? / p>

3 个答案:

答案 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]);
    }
}