Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我自己的Java编译器&;字节码:调用函数的问题_Java_Compiler Construction_Bytecode - Fatal编程技术网

我自己的Java编译器&;字节码:调用函数的问题

我自己的Java编译器&;字节码:调用函数的问题,java,compiler-construction,bytecode,Java,Compiler Construction,Bytecode,我正在用Java为Java编写一个编译器,将JVM作为目标机器,并试图让函数调用正常工作。但是,当我尝试运行由编译器创建的类文件时,出现以下错误: 线程“main”java.lang.VerifyError中的异常:(类:测试,方法:测试签名:(I)I)函数中的返回类型错误” 下面是示例代码: public class Test { public static int test(int a) { return a; } public

我正在用Java为Java编写一个编译器,将JVM作为目标机器,并试图让函数调用正常工作。但是,当我尝试运行由编译器创建的类文件时,出现以下错误: 线程“main”java.lang.VerifyError中的异常:(类:测试,方法:测试签名:(I)I)函数中的返回类型错误”

下面是示例代码:

 public class Test
 {
     public static int test(int a)
     {
        return a;
     }

     public static void main(String[] args)
     {
        int b;
        b = test(b);    
     }
  }
创建的类文件本身:

(如果你试图下载它,谷歌说它含有病毒。所以我提供了一张图片。)

创建的类文件的名称:


我不知道那个类文件有什么问题。

方法
test
return
指令结束,而不是
ireturn
指令。你不能用前者从方法返回int,你必须用后者。

我一点也不知道。但是如果我是你,我会用javac并并排检查结果。不要发布图片,这几乎是无用的。捕获javap的输出并包含它(格式化为代码)。你确定你的类文件格式符合JVM规范吗?谢谢,这很有帮助。我忽略了不同类型的返回。