我使用的程序乙腦(Java字節碼編輯器)http://set.ee/jbe 我有以下的字節碼,但它持續輸出由於錯誤字節碼編譯錯誤
Error: Argument type error at line 53, instruction "ldc"
Error: Syntax error at line 54, instruction """
Error: Argument type error at line 100, instruction "ldc"
Error: Syntax error at line 101, instruction """
Error: Argument type error at line 154, instruction "ldc"
Error: Syntax error at line 155, instruction """
Error: Argument type error at line 206, instruction "ldc"
Error: Syntax error at line 207, instruction """
例如第2個錯誤是指
ldc ");
"
我理解爲什麼這會導致錯誤,但是如何在末尾插入\ r \ n
指令
getstatic BlockResources/instance LBlockResources;
aload_0
invokevirtual BlockBase/GetTypeID()I
invokevirtual BlockResources/getTextureMappingData(I)LTextureMappingData;
astore_2
aload_0
invokevirtual BlockBase/GetMeta()I
ifne 103
iload_1
ifeq 57
new java/lang/StringBuilder
dup
ldc " world.setBlockWithNotify(i + "
invokespecial java/lang/StringBuilder/<init>(Ljava/lang/String;)V
aload_0
invokevirtual BlockBase/GetX()I
invokevirtual java/lang/StringBuilder/append(I)Ljava/lang/StringBuilder;
ldc ", j + "
invokevirtual java/lang/StringBuilder/append(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload_0
invokevirtual BlockBase/GetY()I
invokevirtual java/lang/StringBuilder/append(I)Ljava/lang/StringBuilder;
ldc ", k + "
invokevirtual java/lang/StringBuilder/append(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload_0
invokevirtual BlockBase/GetZ()I
invokevirtual java/lang/StringBuilder/append(I)Ljava/lang/StringBuilder;
ldc ", "
invokevirtual java/lang/StringBuilder/append(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload_2
ifnull 39
aload_2
invokevirtual TextureMappingData/getSpawnCode()Ljava/lang/String;
ifnull 39
aload_2
invokevirtual TextureMappingData/getSpawnCode()Ljava/lang/String;
ldc ""
if_acmpne 43
aload_0
invokevirtual BlockBase/GetTypeID()I
invokestatic java/lang/Integer/valueOf(I)Ljava/lang/Integer;
goto 52
new java/lang/StringBuilder
dup
aload_2
invokevirtual TextureMappingData/getSpawnCode()Ljava/lang/String;
invokestatic java/lang/String/valueOf(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java/lang/StringBuilder/<init>(Ljava/lang/String;)V
ldc ".blockID"
invokevirtual java/lang/StringBuilder/append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java/lang/StringBuilder/toString()Ljava/lang/String;
invokevirtual java/lang/StringBuilder/append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
ldc ");
"
invokevirtual java/lang/StringBuilder/append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java/lang/StringBuilder/toString()Ljava/lang/String;
areturn
new java/lang/StringBuilder
dup
ldc " world.setBlock(i + "
invokespecial java/lang/StringBuilder/<init>(Ljava/lang/String;)V
aload_0
invokevirtual BlockBase/GetX()I
invokevirtual java/lang/StringBuilder/append(I)Ljava/lang/StringBuilder;
ldc ", j + "
invokevirtual java/lang/StringBuilder/append(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload_0
invokevirtual BlockBase/GetY()I
invokevirtual java/lang/StringBuilder/append(I)Ljava/lang/StringBuilder;
ldc ", k + "
invokevirtual java/lang/StringBuilder/append(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload_0
invokevirtual BlockBase/GetZ()I
invokevirtual java/lang/StringBuilder/append(I)Ljava/lang/StringBuilder;
ldc ", "
invokevirtual java/lang/StringBuilder/append(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload_2
ifnull 85
aload_2
invokevirtual TextureMappingData/getSpawnCode()Ljava/lang/String;
ifnull 85
aload_2
invokevirtual TextureMappingData/getSpawnCode()Ljava/lang/String;
ldc ""
if_acmpne 89
aload_0
invokevirtual BlockBase/GetTypeID()I
invokestatic java/lang/Integer/valueOf(I)Ljava/lang/Integer;
goto 98
new java/lang/StringBuilder
dup
aload_2
invokevirtual TextureMappingData/getSpawnCode()Ljava/lang/String;
invokestatic java/lang/String/valueOf(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java/lang/StringBuilder/<init>(Ljava/lang/String;)V
ldc ".blockID"
invokevirtual java/lang/StringBuilder/append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java/lang/StringBuilder/toString()Ljava/lang/String;
invokevirtual java/lang/StringBuilder/append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
ldc ");
"
invokevirtual java/lang/StringBuilder/append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java/lang/StringBuilder/toString()Ljava/lang/String;
areturn
iload_1
ifeq 156
new java/lang/StringBuilder
dup
ldc " world.setBlockAndMetadataWithNotify(i + "
invokespecial java/lang/StringBuilder/<init>(Ljava/lang/String;)V
aload_0
invokevirtual BlockBase/GetX()I
invokevirtual java/lang/StringBuilder/append(I)Ljava/lang/StringBuilder;
ldc ", j + "
invokevirtual java/lang/StringBuilder/append(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload_0
invokevirtual BlockBase/GetY()I
invokevirtual java/lang/StringBuilder/append(I)Ljava/lang/StringBuilder;
ldc ", k + "
invokevirtual java/lang/StringBuilder/append(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload_0
invokevirtual BlockBase/GetZ()I
invokevirtual java/lang/StringBuilder/append(I)Ljava/lang/StringBuilder;
ldc ", "
invokevirtual java/lang/StringBuilder/append(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload_2
ifnull 133
aload_2
invokevirtual TextureMappingData/getSpawnCode()Ljava/lang/String;
ifnull 133
aload_2
invokevirtual TextureMappingData/getSpawnCode()Ljava/lang/String;
ldc ""
if_acmpne 137
aload_0
invokevirtual BlockBase/GetTypeID()I
invokestatic java/lang/Integer/valueOf(I)Ljava/lang/Integer;
goto 146
new java/lang/StringBuilder
dup
aload_2
invokevirtual TextureMappingData/getSpawnCode()Ljava/lang/String;
invokestatic java/lang/String/valueOf(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java/lang/StringBuilder/<init>(Ljava/lang/String;)V
ldc ".blockID"
invokevirtual java/lang/StringBuilder/append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java/lang/StringBuilder/toString()Ljava/lang/String;
invokevirtual java/lang/StringBuilder/append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
ldc ", "
invokevirtual java/lang/StringBuilder/append(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload_0
invokevirtual BlockBase/GetMeta()I
invokevirtual java/lang/StringBuilder/append(I)Ljava/lang/StringBuilder;
ldc ");
"
invokevirtual java/lang/StringBuilder/append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java/lang/StringBuilder/toString()Ljava/lang/String;
areturn
new java/lang/StringBuilder
dup
ldc " world.setBlockAndMetadata(i + "
invokespecial java/lang/StringBuilder/<init>(Ljava/lang/String;)V
aload_0
invokevirtual BlockBase/GetX()I
invokevirtual java/lang/StringBuilder/append(I)Ljava/lang/StringBuilder;
ldc ", j + "
invokevirtual java/lang/StringBuilder/append(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload_0
invokevirtual BlockBase/GetY()I
invokevirtual java/lang/StringBuilder/append(I)Ljava/lang/StringBuilder;
ldc ", k + "
invokevirtual java/lang/StringBuilder/append(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload_0
invokevirtual BlockBase/GetZ()I
invokevirtual java/lang/StringBuilder/append(I)Ljava/lang/StringBuilder;
ldc ", "
invokevirtual java/lang/StringBuilder/append(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload_2
ifnull 184
aload_2
invokevirtual TextureMappingData/getSpawnCode()Ljava/lang/String;
ifnull 184
aload_2
invokevirtual TextureMappingData/getSpawnCode()Ljava/lang/String;
ldc ""
if_acmpne 188
aload_0
invokevirtual BlockBase/GetTypeID()I
invokestatic java/lang/Integer/valueOf(I)Ljava/lang/Integer;
goto 197
new java/lang/StringBuilder
dup
aload_2
invokevirtual TextureMappingData/getSpawnCode()Ljava/lang/String;
invokestatic java/lang/String/valueOf(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java/lang/StringBuilder/<init>(Ljava/lang/String;)V
ldc ".blockID"
invokevirtual java/lang/StringBuilder/append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java/lang/StringBuilder/toString()Ljava/lang/String;
invokevirtual java/lang/StringBuilder/append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
ldc ", "
invokevirtual java/lang/StringBuilder/append(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload_0
invokevirtual BlockBase/GetMeta()I
invokevirtual java/lang/StringBuilder/append(I)Ljava/lang/StringBuilder;
ldc ");
"
invokevirtual java/lang/StringBuilder/append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java/lang/StringBuilder/toString()Ljava/lang/String;
areturn
我不知道如何在JBE中做到這一點,但你可以很容易地在Krakatau做字符串轉義。 – Antimony