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

Selenium自动化运行抛出UndeclaredThrowableException异常求解决方案

异常根因分析

该报错的核心是JDK版本与依赖库不兼容:

  • 底层抛出的java.lang.NoSuchMethodException: java.lang.invoke.MethodHandles$Lookup.(java.lang.Class,int)是问题根源:你本地使用的JDK为17及以上高版本,而项目依赖的io.qameta.atlas组件是基于JDK 8编译实现的,该组件内部通过反射调用的MethodHandles$Lookup构造方法在高版本JDK中被调整了访问权限与方法签名,无法直接访问。
  • 同事设备运行正常是因为其本地JDK版本为JDK 8,与依赖组件适配。
  • 外层的java.lang.reflect.UndeclaredThrowableException是动态代理类对底层异常的包装,无实际排查价值。
修复方案
  • 方案1:统一JDK版本
    将本地项目的运行、编译JDK版本调整为和同事一致的JDK 8,同步调整IDE的项目SDK配置、编译级别,以及构建工具(Maven/Gradle)的JDK配置即可。
  • 方案2:添加JVM启动参数开放权限
    若需要使用高版本JDK,在测试运行的VM选项中添加如下参数:
    --add-opens java.base/java.lang.invoke=ALL-UNNAMED
    
    如使用IDEA运行,可在对应TestNG运行配置的「VM options」栏填入上述参数;如使用构建工具运行测试,将参数添加到测试任务的jvmArgs配置中即可。
  • 方案3:升级依赖组件版本
    检查io.qameta.atlas是否发布了兼容高版本JDK的更新版本,将依赖升级到对应兼容版本即可无需额外配置直接运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 16:15:00