.version 49 0
.source Example.java
.class super public Example
.super java/lang/Object
.method public <init> : ()V
.limit stack 1
.limit locals 1
aload_0
invokespecial java/lang/Object <init> ()V
return
.end method
.method static public main : ([Ljava/lang/String;)V
.limit stack 2
.limit locals 1
goto first
second:
pop
getstatic java/lang/System out Ljava/io/PrintStream;
ldc 'Hello world'
invokevirtual java/io/PrintStream println (Ljava/lang/String;)V
goto third
first:
jsr_w second
third:
return
.end method
/*
* Decompiled with CFR 0_103.
*/
public class Example {
public static void main(String[] arrstring) {
Object v0 = null;
}
}
This was fixed in 0.105. Apparently I'm also credited in the changelog. <3
Procyon 0.5.30
//
// Decompiled by Procyon v0.5.30
//
public class Example
{
public static void main(final String[] p0) {
//
// This method could not be decompiled.
//
// Could not show original bytecode, likely due to the same error.
//
// The error that occurred was:
//
// com.strobel.assembler.metadata.MethodBodyParseException: An error occurred while parsing the bytecode of method 'Example.main:([Ljava/lang/String;)V'.
// at com.strobel.assembler.metadata.MethodReader.readBody(MethodReader.java:65)
// at com.strobel.assembler.metadata.MethodDefinition.tryLoadBody(MethodDefinition.java:722)
// at com.strobel.assembler.metadata.MethodDefinition.getBody(MethodDefinition.java:83)
// at com.strobel.decompiler.languages.java.ast.AstMethodBodyBuilder.createMethodBody(AstMethodBodyBuilder.java:202)
// at com.strobel.decompiler.languages.java.ast.AstMethodBodyBuilder.createMethodBody(AstMethodBodyBuilder.java:99)
// at com.strobel.decompiler.languages.java.ast.AstBuilder.createMethodBody(AstBuilder.java:757)
// at com.strobel.decompiler.languages.java.ast.AstBuilder.createMethod(AstBuilder.java:655)
// at com.strobel.decompiler.languages.java.ast.AstBuilder.addTypeMembers(AstBuilder.java:532)
// at com.strobel.decompiler.languages.java.ast.AstBuilder.createTypeCore(AstBuilder.java:499)
// at com.strobel.decompiler.languages.java.ast.AstBuilder.createTypeNoCache(AstBuilder.java:141)
// at com.strobel.decompiler.languages.java.ast.AstBuilder.createType(AstBuilder.java:130)
// at com.strobel.decompiler.languages.java.ast.AstBuilder.addType(AstBuilder.java:105)
// at com.strobel.decompiler.languages.java.JavaLanguage.buildAst(JavaLanguage.java:71)
// at com.strobel.decompiler.languages.java.JavaLanguage.decompileType(JavaLanguage.java:59)
// at com.strobel.decompiler.DecompilerDriver.decompileType(DecompilerDriver.java:317)
// at com.strobel.decompiler.DecompilerDriver.main(DecompilerDriver.java:141)
// Caused by: java.lang.NullPointerException
// at com.strobel.assembler.metadata.MethodReader.readBodyCore(MethodReader.java:170)
// at com.strobel.assembler.metadata.MethodReader.readBody(MethodReader.java:62)
// ... 15 more
//
throw new IllegalStateException("An error occurred while decompiling this method.");
}
}
Mike has fixed this. The next release should not have this issue
JD-GUI 1.4.0
public class Example
{
/* Error */
public static void main(String[] arg0)
{
// Byte code:
// 0: goto +15 -> 15
// 3: pop
// 4: getstatic 17 java/lang/System:out Ljava/io/PrintStream;
// 7: ldc 1
// 9: invokevirtual 23 java/io/PrintStream:println (Ljava/lang/String;)V
// 12: goto +8 -> 20
// 15: jsr_w -1 -1 -1 -12
// 20: return
}
}
This may be fixed in a future release.
Fernflower @810818e
public class Example {
public static void main(String[] var0) {
System.out.println("Hello world");
}
}