使用Selenium 3.8运行示例脚本遇java.lang.VerifyError错误求助
解决Selenium 3.8中
java.lang.VerifyError: Cannot inherit from final class错误的方案 我碰到过好几个开发者遇到这个问题,大多都是依赖冲突或者版本不兼容在搞鬼,下面是几个最常见的排查和解决方向:
先排查依赖版本冲突
这个错误最常见的原因是项目里的依赖包版本“打架”了。比如Selenium 3.8本身依赖特定版本的Guava(23.0版本),如果你的项目同时引入了更高或更低版本的Guava,就会导致类加载时出现冲突,触发这个验证错误。
你可以用依赖分析工具来揪出冲突:- Maven项目:执行
mvn dependency:tree命令,查看依赖树,找出重复或版本不一致的依赖,比如Guava、Apache Commons这类Selenium依赖的库。 - Gradle项目:运行
./gradlew dependencies任务,同样检查依赖树。
找到冲突后,通过排除不兼容的依赖来解决,比如在Maven里排除Selenium自带的Guava,然后手动引入兼容的23.0版本:
<dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-java</artifactId> <version>3.8.0</version> <exclusions> <exclusion> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>23.0</version> </dependency>- Maven项目:执行
确认Selenium组件完整性
检查你是否引入了Selenium 3.8的所有必要组件,比如selenium-java、selenium-api、对应浏览器的驱动包(比如selenium-chrome-driver)。如果是手动下载jar包,有没有损坏或缺失的情况?如果是用构建工具管理的,试试清理本地仓库后重新下载依赖,比如Maven的mvn clean install -U命令。检查JDK版本是否兼容
Selenium 3.8要求JDK版本至少是1.8,如果你的项目用的是1.7或更低版本,就可能出现类验证错误。确认一下项目的JDK配置,切换到1.8及以上版本试试。检查代码是否违规继承final类
最后,看看你的代码里有没有尝试继承Selenium中被标记为final的类。Selenium的一些核心类(比如某些内部实现类)是不允许被继承的,如果你的自定义类不小心继承了这类final类,就会直接抛出这个错误。仔细检查你的代码,特别是继承WebDriver相关类的部分。
内容的提问来源于stack exchange,提问作者Matri
相关产品推荐
相关产品推荐

