我自己的Java编译器&;字节码:调用函数的问题
我正在用Java为Java编写一个编译器,将JVM作为目标机器,并试图让函数调用正常工作。但是,当我尝试运行由编译器创建的类文件时,出现以下错误: 线程“main”java.lang.VerifyError中的异常:(类:测试,方法:测试签名:(I)I)函数中的返回类型错误” 下面是示例代码:我自己的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
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规范吗?谢谢,这很有帮助。我忽略了不同类型的返回。