selenium - 线程 "main"java.lang.NoClassDefFoundError : okhttp3/ConnectionPool with Selenium and Java 中出现异常

标签 selenium selenium-webdriver webdriver noclassdeffounderror okhttp

我有一个简单的 Selenium 测试代码:

public static void main(String[] args) {

    System.setProperty("webdriver.chrome.driver", "/home/chromedriver");
    WebDriver driver= new ChromeDriver();
    driver.get("http://google.com");
}

我收到此错误:

Exception in thread "main" java.lang.NoClassDefFoundError: okhttp3/ConnectionPool | Caused by: java.lang.ClassNotFoundException: okhttp3.ConnectionPool

我认为 jar 和依赖关系都可以,但我仍然收到此错误

最佳答案

错误说明了一切:

Exception in thread "main" java.lang.NoClassDefFoundError: okhttp3/ConnectionPool | Caused by: java.lang.ClassNotFoundException: okhttp3.ConnectionPool

什么是 NoClassDefFoundError

<强> NoClassDefFoundError Java 中的 发生在 Java Virtual Machine 无法在运行时找到编译时可用的特定类。例如,如果我们已经解析了来自类的方法调用或访问类的任何静态成员,并且该类在运行时不可用,则JVM 会抛出 NoClassDefFoundError

该错误清楚地表明您错误配置了类路径。除非您告诉我们如何运行测试、您使用哪个构建器或 IDE 以及构建器配置文件或项目描述,否则很难调试问题的确切原因。

出了什么问题:

从上述所有要点可以清楚地看出,相关的 Class Methods 已从一个来源解决 Compile Time 期间不可用 Run Time

如果存在多个源通过JDK解析类和方法,就会出现这种情况。 / Maven / Gradle

Selenium 对 okhttp 的依赖

此时值得一提的是,selenium-java-3.9.x 客户端确实依赖于okhttp,您可以找到 dependency list here .

还需要注意的是:

解决方案:

这里有几个步骤可以解决NoClassDefFoundError - okhttp3/ConnectionPool 错误:

  • 使用构建工具时,例如<强> Maven Gradle 删除所有 External JARs 来自 Java Build Path 。 <强> Maven Gradle 将下载并解决所有必需的依赖项。
  • 如果使用 Selenium JARs Java Project 仅添加必需的 External JARs Java Build Path并删除未使用的。
  • 使用Maven ,或者使用 <artifactId>selenium-java</artifactId> <artifactId>selenium-server</artifactId> 。避免同时使用两者。
  • JDK 升级到最新级别 JDK 8u162 .
  • Selenium升级到当前级别 Version 3.10.0 .
  • 升级 ChromeDriver ChromeDriver v2.37级别。
  • Chrome 版本保持在 Chrome v64-66 级别。 (as per ChromeDriver v2.37 release notes)
  • 通过IDE清理您的项目工作区,并仅使用所需的依赖项重建项目。
  • 使用CCleaner工具可以清除执行测试套件之前和之后的所有操作系统杂务。
  • 如果您的基本 Chrome 版本太旧,请通过 Revo Uninstaller 卸载它并安装 Chrome 的最新 GA 和发布版本。
  • 执行你的@Test .

关于selenium - 线程 "main"java.lang.NoClassDefFoundError : okhttp3/ConnectionPool with Selenium and Java 中出现异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59865896/

相关文章:

java - 在 testng 中使用 selenium 中的函数时如何保持代码干燥?

python - 使用 selenium 和 google colab 抓取 youtube 评论很慢

java - presentOfAllElementsLocatedBy找不到元素

java - 在本地主机 :8080 上运行 selenium webdriver

javascript - 获取网页中发生的网络调用计数

python - 使用 selenium Web 驱动器 python 单击 href=javascript 时出现问题

javascript - Selenium 中命令的 java/javascript 等效方法是什么

java - 用于启用/禁用用户的单个按钮如何使用 Selenium Webdriver 识别按钮状态

java - Maven 无法获取最新的 Selenium Java jar

java - 如何使用仅带有 SRC 的 Selenium 单击图像