线程" main"中的例外情况java.lang.NoClassDefFoundError:带有Selenium和Java的okhttp3 / ConnectionPool

时间:2018-03-21 11:19:45

标签: selenium selenium-webdriver webdriver noclassdeffounderror okhttp3

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

var xhr = new XMLHttpRequest();
var imgTag = new Image();   
imgTag.src = 'data:image/webp;base64,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';
xhr.open('get', imgTag.src);
xhr.responseType = 'arraybuffer';
xhr.onreadystatechange = function() {
  if (xhr.readyState == 4 && xhr.status == 200) {
    var webp_data = new Uint8Array(xhr.response);
    decode(webp_data);
  }
};
xhr.send();

我得到了这个错误:

public static void main(String[] args) {

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

我认为jar和Dependency都可以,但我仍然会收到此错误

4 个答案:

答案 0 :(得分:1)

错误说明了一切:

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

什么是 NoClassDefFoundError

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

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

出了什么问题:

从上述所有观点可以清楚地看出,相关的 NoClassDefFoundError Class 是从一个来源 {{1在 Methods 期间无法使用

如果通过 Compile Time / Run Time / {存在多个来源来解析类和方法,则会出现这种情况{1}}

Selenium对okhttp的依赖

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

还应注意:

解决方案:

以下是解决 JDK 错误的几个步骤:

  • 使用构建工具时,例如 Maven Gradle 删除所有 NoClassDefFoundError - okhttp3/ConnectionPool Maven 即可。 Gradle External JARs 将下载并解决所有必需的依赖项。
  • 如果在 Java Build Path 中使用 Maven ,只需在 Gradle > Selenium JARs 并删除未使用的。
  • 使用 Java Project 时,请使用 External JARs Java Build Path 。避免同时使用两者。
  • 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将其卸载并安装最新的GA和已发布的Chrome版本。
  • 执行Maven

答案 1 :(得分:1)

请检查您项目库中的jar文件:

okhttp-3.10.0.jarokio1.14.1.jar

可以使用此jar文件解决您的问题:

  

java.lang.NoClassDefFoundError:okhttp3 / ConnectionPool

答案 2 :(得分:0)

我希望,你没有上课就尝试了一种方法。请尝试将主要方法放在课堂上。如果您有任何进一步的错误,请告诉我。

班级考试{

public static void main(String [] args){

System.setProperty("webdriver.chrome.driver", "youHaveToUseLocationWhereYouHaveYourChromeDriver");
WebDriver driver= new ChromeDriver();

driver.get("http://google.com");

} }

答案 3 :(得分:0)

我有与此相同的问题。通过遵循上述建议,并将Selenium客户端JAR(包括源代码)添加到modulepath中,并将Selenium服务器JAR添加到classpath中,它可以正常工作。