4

メモ帳++でMinecraftクラスフォルダを開いています。しかし、開くと、Nul、DC1、SO、SOH、FF、STXなどのボックスがたくさん表示されます。ガイドでは、クラスファイルが正常に開くことがわかりますが、何が間違っているのでしょうか。

4

3 に答える 3

2

コンパイルされたJavaクラスを編集しようとしています。

テキストファイルではないため、テキストエディタで編集することはできません。あなたは.javaファイルが欲しいのですが、Minecraftがオープンソースだとは思いません。

ガイドをもう一度確認してください。ガイドがあなたを導くことを意図していた道から外れた可能性があります。

于 2012-02-05T07:37:05.020 に答える
2

ファイルがまだコンパイルされている場合、ファイルのソースを表示することはできません。クラスファイルをJavaファイルに逆コンパイルする必要があります。その後、メモ帳/日食でファイルを読み取ることができます。人々がminecraftソースを逆コンパイルするために作成したプログラムがあります。あなたはそれを編集することができます、それはmcpと呼ばれます

http://mcp.ocean-labs.de/index.php/MCP_Releases

これをダウンロードして、意図したとおりに続行すると、コードを自由に編集できます

于 2012-08-09T00:02:13.203 に答える
0

クラスファイルをそのまま開きたい場合は、任意のバイナリエディタを使用してください。ghexは良いものです。できるよ:

ghex MyClass.class

javapは、Javaクラスファイルを分解するための組み込みツールです。次に例を示します。

javap -v MyClass.class

これにより、クラス、そのバイトコード、さらにはクラスが実行していることについての説明についての多くの情報が提供されます。

Javaクラスファイルの逆コンパイルのためのもう1つの優れたツールは、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]);
    }
}
于 2018-07-29T00:07:54.457 に答える