首页 > 解决方案 > 如何修复“线程中的异常”main“java.lang.VerifyError:无法从最终类继承”错误

问题描述

我试图在我的 selenium java 项目中运行 webdriver 脚本,然后遇到了这个错误。我之前运行的是旧版本的eclipse,一切都很好。当我切换到 eclipse 2019 时开始发生这种情况

我尝试在谷歌上搜索该问题,但无法找到解决方法。

软件版本:

class NumberOne {
public static void main(String[] args) throws Exception {

    System.setProperty("webdriver.chrome.driver", "C://Selenium/chromedriver.exe");
    WebDriver driver = new ChromeDriver();
}
}

我面临的错误

Exception in thread "main" java.lang.VerifyError: Cannot inherit from final class
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(Unknown Source)
    at java.security.SecureClassLoader.defineClass(Unknown Source)
    at java.net.URLClassLoader.defineClass(Unknown Source)
    at java.net.URLClassLoader.access$100(Unknown Source)
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at org.openqa.selenium.os.OsProcess.<init>(OsProcess.java:54)
    at org.openqa.selenium.os.CommandLine.<init>(CommandLine.java:38)
    at org.openqa.selenium.remote.service.DriverService.start(DriverService.java:183)
    at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:79)
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:552)
    at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:213)
    at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:131)
    at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:181)
    at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:168)
    at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:123)
    at numberOne.webdriver.main(webdriver.java:13)

标签: javaeclipseseleniumselenium-webdriverwebdriver

解决方案


此错误消息...

Exception in thread "main" java.lang.VerifyError: Cannot inherit from final class

...意味着存在版本不匹配,因为您构建的类与您正在测试的类之间存在不一致。

这似乎是一个纯粹的版本控制问题,最有可能的原因是您的构建类路径启动类路径之间存在冲突。换句话说,您的程序是针对一个不是的类的版本编译的,final但您的程序是针对它所在的类的版本启动的final


解决方案

解决方案可以是以下任一/所有步骤;

  • 如果您使用的是Maven,请删除~/.m2缓存/目录。
  • 通过IDE清理项目工作区并仅使用所需的依赖项重建项目。
  • 仅限Windows 操作系统)使用CCleaner工具在执行测试套件之前和之后清除所有操作系统琐事。
  • 重新启动系统
  • @Test非 root用户身份执行。

推荐阅读