使用 jasmin 字节码汇编程序创建的代码中的 NullPointerException

NullPointerException in code created with jasmin bytecode assembler

此代码抛出 java.lang.NullPointerException。我正在尝试将一些代码编译到 jvm,这就是我的编译器输出

.class  public  test
.super  java/lang/Object
.field static   i  [I
.method  public static  main([Ljava/lang/String;)V
invokestatic    test/main()V
return
.limit  locals  1
.limit  stack  20
.end    method
.method  public static  main()V
.limit  locals  8
getstatic   test/i  [I
ldc 1
ldc 5
iastore
return
.limit  stack  20
.end    method

但是它不起作用,我可以找出错误的来源(没有给出行号。)

我打赌它没有在行中正确存储全局数组的值

getstatic   test/i  [I
ldc 1
ldc 5
iastore

我的问题是这个应该怎么编译

这将编译为 Java 代码

public class Test {
    static int[] i;
    public static void main(String[] args) {
        main();
    }
    public static void main() {
        i[1] = 5;
    }
}

如果您编译并 运行 这个,您会看到它抛出一个 NullPOinterException,因为没有创建一个 int 数组来存储在 i 中。您需要使用 newarray 创建维度 2(至少)的 int[] 对象才能使此代码正常工作。