'Selenium Webdriver + Java - Eclipse: java.lang.NoClassDefFoundError
I installed JDK from here: http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html (This version for windows x64: Java SE Development Kit 8u151)
I downloaded eclipse from here: http://www.eclipse.org/downloads/packages/eclipse-ide-java-developers/oxygenr (Windows 64-bit)
I opened a new project in eclipse: File->New->Java Project
Then I downloaded Selenium Java Jars from here: http://www.seleniumhq.org/download/ ---> java language
Then in eclipse I click on my project -> properties ->Java Build Path -> Libraries tab -> Add External JARs... -> I go to "SeleniumDrivers\Java" library (there I saved all the JARS that I downloaded) -> I checked all the files there: these files
I clicked on "ok" and created a new class in eclipse
Then I downloaded chromedriver from here: http://www.seleniumhq.org/download
I unzipped it and saved it here: C:\Selenium\Drivers
This is my script:
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
public class MainClass {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("hi there\n");
System.setProperty("webdriver.chrome.driver",
"C:/Selenium/Drivers/chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.get("https://www.facebook.com");
}
}
As you can see, this is a very basic script which opens chrome browser and navigate to facebook.
I run this script and got this error:
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/http/config/RegistryBuilder
at org.openqa.selenium.remote.internal.HttpClientFactory.getClientConnectionManager(HttpClientFactory.java:69)
at org.openqa.selenium.remote.internal.HttpClientFactory.<init>(HttpClientFactory.java:57)
at org.openqa.selenium.remote.internal.HttpClientFactory.<init>(HttpClientFactory.java:60)
at org.openqa.selenium.remote.internal.ApacheHttpClient$Factory.getDefaultHttpClientFactory(ApacheHttpClient.java:242)
at org.openqa.selenium.remote.internal.ApacheHttpClient$Factory.<init>(ApacheHttpClient.java:219)
at org.openqa.selenium.remote.HttpCommandExecutor.getDefaultClientFactory(HttpCommandExecutor.java:93)
at org.openqa.selenium.remote.HttpCommandExecutor.<init>(HttpCommandExecutor.java:72)
at org.openqa.selenium.remote.service.DriverCommandExecutor.<init>(DriverCommandExecutor.java:63)
at org.openqa.selenium.chrome.ChromeDriverCommandExecutor.<init>(ChromeDriverCommandExecutor.java:36)
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 MainClass.main(MainClass.java:11)
Caused by: java.lang.ClassNotFoundException: org.apache.http.config.RegistryBuilder
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)
... 13 more
I don't know how to resolve this issue, can you please help to solve it so that I will be able to run my basic script?
Solution 1:[1]
java.lang.NoClassDefFoundError
is observed when the JRE can't find a Class.
In simple words the required imports
or jar
files are not available. From the snapshot you have shared its pretty much evident that you have tried to add the Java Client related jars.
In this case you need to follow the following steps:
- Remove all the jars referring to previous versions of Selenium standalone server & Selenium Java client
- Import only the selenium-server-standalone-3.7.0.
- In your IDE within Project menu, select the option Build Automatically and execute the
Clean
option for all of your Projects. - Execute your Test.
Solution 2:[2]
Seems like the latest (v3.7
) Selenium-Java zip file contains lesser jars in the lib folder. v3.6
contained 10 lib jars but v3.7
contains only 7 jars.
The missing jar which is causing all the issue for the op is 'httpcore-4.4.6.jar'. I am not sure whether the removal of jar is intentional or not. Maybe chromedriver
has catch up with Selenium java 3.7
seeing that .
I the mean time use Selenium Java 3.6
. Don't forget to add the /lib folder as well.
http://selenium-release.storage.googleapis.com/3.6/selenium-java-3.6.0.zip
Solution 3:[3]
i've added the three missing jars from version 3.6 and fixed everything. http://selenium-release.storage.googleapis.com/3.6/selenium-java-3.6.0.zip
Solution 4:[4]
update the the appium java-client to 7.3.0 and selenium-java to 3.141.59 this resolved my issue hope it helps.
Solution 5:[5]
I faced the same issue. For me, it didn't found the WebDriver. It seemed to happen as I imported the libraries the location other than classpath. Then I opened up a new project, went to the Properties>Java Build Path>Libraries. This time I imported the libraries under classpath. Now it works fine.
Solution 6:[6]
For those who are using Appium java client with Selenium, don't try to import Java client and selenium dependencies together in your pom.xml, you have already selenium dependencies imported with the java client dependency, you only have to import Java client dependency in your pom.xml and it should work. Reference: https://mvnrepository.com/artifact/io.appium/java-client/7.6.0
Solution 7:[7]
For me, the issue was solved by adding the external jars (selenium-java jar files) to 'Classpath', instead of to 'Modulepath'
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | |
Solution 2 | Sighil |
Solution 3 | Miroslav Trankov |
Solution 4 | Pushkar Narayan |
Solution 5 | Mohammed Jafar Sadik |
Solution 6 | Ibrahim Mensi |
Solution 7 | Ronwald |