java - 如何修复“线程中的异常”main“java.lang.VerifyError:无法从最终类继承”错误
问题描述
我试图在我的 selenium java 项目中运行 webdriver 脚本,然后遇到了这个错误。我之前运行的是旧版本的eclipse,一切都很好。当我切换到 eclipse 2019 时开始发生这种情况
我尝试在谷歌上搜索该问题,但无法找到解决方法。
软件版本:
- 日食 2019-09 R
- JDK 8.0
- ChromeDriver 78.0.3904.105
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)
解决方案
此错误消息...
Exception in thread "main" java.lang.VerifyError: Cannot inherit from final class
...意味着存在版本不匹配,因为您构建的类与您正在测试的类之间存在不一致。
这似乎是一个纯粹的版本控制问题,最有可能的原因是您的构建类路径和启动类路径之间存在冲突。换句话说,您的程序是针对一个不是的类的版本编译的,final
但您的程序是针对它所在的类的版本启动的final
。
解决方案
解决方案可以是以下任一/所有步骤;
- 如果您使用的是Maven,请删除
~/.m2
缓存/目录。 - 通过IDE清理项目工作区并仅使用所需的依赖项重建项目。
- (仅限Windows 操作系统)使用CCleaner工具在执行测试套件之前和之后清除所有操作系统琐事。
- 重新启动系统。
@Test
以非 root用户身份执行。
推荐阅读
- kubernetes - kong 限速插件对请求没有影响
- javascript - 如何使用 Javascript 中的 fetch API 将文件上传到 Laravel 控制器?
- laravel - 如何将nestedSortable.js 相关数组保存到数据库中?
- angular - 无法通过一个 ngFor 显示两个可观察数组:显示相同的值
- jekyll - 是否可以只缓存一个 URL
- mysql - 不支持 RSA 加密 - 使用 django mysql 和 docker 缓存_sha2_password
- mql4 - MQL4 - 未实现订单利润 - 手动计算,转换略有偏差
- reactjs - 未捕获的错误:对象作为 React 子对象无效(找到:带有键 {product} 的对象)
- java - 如何调用 REST API 动词 POST,输入是 UUID 列表?
- docker - Docker Compose:在同一个 Repository 中为开发和部署设置两个 compose 文件