You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JVM字节码编译报Expecting to find object/array on stack错误如何解决

报错原因说明

你代码存在两处核心问题,其中第二点是触发本次校验错误的直接原因:

  • 冗余操作:第18~20行的aload_1 -> astore_0 -> aload_0 属于无意义的冗余指令,你可以直接使用aload_1获取ArrayList对象引用,不过这部分不会触发校验报错。
  • 方法签名配置错误:第22行invokevirtual #34调用ArrayList.get时,你写的方法描述符是(I)Z,但ArrayList.get(int)的正确返回值是Object类型,对应描述符应为(I)Ljava/lang/Object;。JVM做字节码校验时会按照你写的描述符推导栈类型,认为这条指令执行后栈顶是boolean基本类型值(JVM中Z对应boolean类型),而接下来的checkcast指令要求栈顶必须是引用类型才能做类型校验,此时栈顶是基本类型,就直接抛出了Expecting to find object/array on stack的错误。

另外你第31行istore_1会覆盖之前存储ArrayList引用的局部变量槽1,属于逻辑隐患,虽然本次用不到该引用不会触发问题,但建议给int类型的返回值分配独立的局部变量槽。

内容的提问来源于stack exchange,提问作者fnisi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 02:18:01