NoClassDefFoundError while running a valid jar (compiled with dependencies) despite having commons-httpclient and httpcomponents dependencies on pom
apache-httpclient-4.x, java, maven, selenium-webdriver
Solution
I ran into this same issue last night with my WebDriver project, and after a bit of debugging, found out that it was missing the following dependency. After adding them I didn't encounter this exception again.
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.3.5</version>
</dependency>
Problem
I'm trying to automate a simple user act by using selenium webdriver from main method (not under test scope) When running the following code from the complier it works! But when running the jar on several cases - facing the following issue (I'm running on Ubuntu, using java 7) "Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/http/conn/HttpClientConnectionManager" @Log public class MainProgram { ``` public WebDriver driver = new FirefoxDriver(); public static void main(String args[]) { // Injector injector = Guice.createInjector(new WebModule()); System.out.println("Browser will soon be opened"); MainProgram mainProgram = new MainProgram(); mainProgram.run(); } public void run(){ driver.get("http://www.google.co.il"); WebElement lookFor = driver.findElement(By.name("q")); if(!lookFor.isDisplayed()){ driver.close(); log.log(Level.WARNING,"Failed!"); }; driver.close(); } } ``` WebDriver dependencies on pom: ``` <dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-server</artifactId> <version>2.42.2</version> </dependency> <dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-java</artifactId> <version>2.42.2</version> </dependency> <dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-api</artifactId> <version>2.42.2</version> </dependency> <dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-firefox-driver</artifactId> <version>2.42.2</version> </dependency> Case A when removed -commons-httpclient - received: HttpClientConnectionManager as follows: <!-- <dependency> <groupId>commons-httpclient</groupId> <artifactId>commons-httpclient</artifactId> <version>3.1</version> </dependency>--> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.3.4</version> <!-- <scope>test</scope>--> </dependency> Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/http/conn/HttpClientConnectionManager at org.openqa.selenium.remote.HttpCommandExecutor.<init>(HttpCommandExecutor.java:99) at org.openqa.selenium.remote.HttpCommandExecutor.<init>(HttpCommandExecutor.java:82) at org.openqa.selenium.firefox.internal.NewProfileExtensionConnection.start(NewProfileExtensionConnection.java:77) ------------------------------------------------------------------------------------------------------------------------------------------- Case B removed both commons-httpclient + httpcomponents received HttpClientConnectionManager: <!-- <!– <dependency> <groupId>commons-httpclient</groupId> <artifactId>commons-httpclient</artifactId> <version>3.1</version> </dependency>–> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.3.4</version> <!– <scope>test</scope>–> </dependency>--> liron@liron-Latitude-3330:~$ java -jar automatic-tests-4.0-SNAPSHOT-jar-with-dependencies.jar Try Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/http/conn/HttpClientConnectionManager at org.openqa.selenium.remote.HttpCommandExecutor.<init>(HttpCommandExecutor.java:99) at org.openqa.selenium.remote.HttpCommandExecutor.<init>(HttpCommandExecutor.java:82) --------------------------------------------------------------------------------------------------------------------------------------------- Case C when both were added to pom - same HttpClientConnectionManager liron@liron-Latitude-3330:~$ java -jar automatic-tests-4.0-SNAPSHOT-jar-with-dependencies.jar Browser will soon be opened Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/http/conn/HttpClientConnectionManager at org.openqa.selenium.remote.HttpCommandExecutor.<init>(HttpCommandExecutor.java:99) at org.openqa.selenium.remote.HttpCommandExecutor.<init>(HttpCommandExecutor.java:82) at org.openqa.selenium.firefox.internal.NewProfileExtensionConnection.start(NewProfileExtensionConnection.java:77) ---------------------------------------------------------------------------------------------------------------------------------------------- ```