博客
关于我
java.lang.VerifyError: Stack map does not match the one at exception
阅读量:806 次
发布时间:2023-01-27

本文共 746 字,大约阅读时间需要 2 分钟。

在编写AOP程序时,遇到了JDK 11环境下的verifyError问题。verifyError提示“Stack map does not match the one at exception”,这通常是由于JVM在加载动态生成的类文件时对字节码进行校验失败所引起的。

JVM在加载类文件时会执行字节码校验,这一过程旨在确保字节码的安全性和一致性。如果类文件是使用javac编译生成的,通常不会出现verifyError。但当类文件由动态工具(如asm、cglib等)生成,或来源于第三方库时,可能会遇到校验失败的问题,这可能是由于字节码生成程序存在bug,也可能是由于JVM版本升级导致新增的校验条件。

对于这个问题,可以采取以下解决措施:

  • 禁止字节码校验:通过设置JVM启动时参数-noverify来禁用字节码校验,这可以让动态生成的类文件避开JVM的校验步骤。例如:
  • java -noverify YourMainClass
    1. 更换JVM实现:某些情况下,可以考虑更换基于 McCabe 的 JDK(如JDBC或PrivateDirectory),尤其是在遇到特定JVM版本的验证问题时。
    2. 在禁用校验时,需要注意以下几点:

      • 安全隐患:禁用校验可能会降低运行时的安全性,允许恶意代码执行。
      • 性能影响:校验机制的禁用会增加性能开销,影响应用的执行效率。
      • 兼容性问题:不同JVM实现可能对校验的实现方式有所不同,禁用校验可能导致其他问题。

      在实际操作中,应根据具体的应用场景权衡 performance 和 security 的权衡。同时,可以结合字节码生成工具进行审计,确保生成的字节码是正确无误的。此外,尽量使用那些已经通过广泛测试并被证明稳定性的动态类生成工具,以减少遇到类似问题的风险。

    转载地址:http://ybryk.baihongyu.com/

    你可能感兴趣的文章
    OpenCV与AI深度学习 | YOLO11介绍及五大任务推理演示(目标检测,图像分割,图像分类,姿态检测,带方向目标检测)
    查看>>
    OpenCV与AI深度学习 | YOLOv10在PyTorch和OpenVINO中推理对比
    查看>>
    OpenCV与AI深度学习 | YOLOv11来了:将重新定义AI的可能性
    查看>>
    OpenCV与AI深度学习 | YOLOv8自定义数据集训练实现火焰和烟雾检测(代码+数据集!)
    查看>>
    OpenCV与AI深度学习 | YOLOv8重磅升级,新增旋转目标检测,又该学习了!
    查看>>
    OpenCV与AI深度学习 | 一文带你读懂YOLOv1~YOLOv11(建议收藏!)
    查看>>
    OpenCV与AI深度学习 | 五分钟快速搭建一个实时人脸口罩检测系统(OpenCV+PaddleHub 含源码)
    查看>>
    OpenCV与AI深度学习 | 什么是 COCO 数据集?
    查看>>
    OpenCV与AI深度学习 | 低对比度缺陷检测应用实例--LCD屏幕脏污检测
    查看>>
    OpenCV与AI深度学习 | 使用 MoveNet Lightning 和 OpenCV 实现实时姿势检测
    查看>>
    OpenCV与AI深度学习 | 使用 OpenCV 创建自定义图像滤镜
    查看>>
    OpenCV与AI深度学习 | 使用 SAM 和 Grounding DINO 分割卫星图像
    查看>>
    OpenCV与AI深度学习 | 使用OpenCV图像修复技术去除眩光
    查看>>
    OpenCV与AI深度学习 | 使用OpenCV检测并计算直线角度
    查看>>
    OpenCV与AI深度学习 | 使用OpenCV轮廓检测提取图像前景
    查看>>
    OpenCV与AI深度学习 | 使用Python和OpenCV实现火焰检测(附源码)
    查看>>
    OpenCV与AI深度学习 | 使用PyTorch进行小样本学习的图像分类
    查看>>
    OpenCV与AI深度学习 | 使用YOLO11实现区域内目标跟踪
    查看>>
    OpenCV与AI深度学习 | 使用YOLOv8做目标检测、实例分割和图像分类(包含实例操作代码)
    查看>>
    OpenCV与AI深度学习 | 使用单相机对已知物体进行3D位置估计
    查看>>