Java – NoClassDefFoundError is running a valid jar (compiled with dependencies), although it has common httpclient and httpcomponents dependencies in POM
•
Java
I tried to automate a simple user behavior by using selenium webdriver under the main method (not under test)
"Exception in thread" mainly "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 relies 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) ----------------------------------------------------------------------------------------------------------------------------------------------
Solution
Last night, I encountered the same problem as my webdriver project. After debugging, I found that it lacks the following dependencies I never encountered this exception after adding
<dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.3.5</version> </dependency>
The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
二维码