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

时间:2018-11-30 13:47:49

标签: java compiler-construction jvm jasmin

此代码引发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

我的问题是应该如何编译

1 个答案:

答案 0 :(得分:2)

这将编译为Java代码

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

如果编译并运行此代码,则会看到它引发NullPOinterException,因为没有任何东西正在创建要存储在i中的int数组。您需要使用int[]创建(至少)维度为2的newarray对象,以使此代码正常工作。