How can I resolve my class from a different jar with same structure like another
Note : Though the jars in question contains the word selenium but the question here have no direct relation with selenium
Till a few days back PhantomJSDriver was released bundled along with selenium-server-standalone-v.v.v.jar
. So my Class was working fine as:
import java.io.File;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.phantomjs.PhantomJSDriver;
public class A_PhantomJS
{
public static void main(String[] args)
{
File path=new File("C:\\Utility\\phantomjs-2.1.1-windows\\bin\\phantomjs.exe");
System.setProperty("phantomjs.binary.path",path.getAbsolutePath());
WebDriver driver= new PhantomJSDriver();
driver.manage().window().maximize();
driver.get("https://www.google.co.in");
}
}
Now selenium-server-standalone-v.v.v.jar
doesn't bundles the jar for PhantomJSDriver dependency.
So I have downloaded the jar phantomjsdriver-1.1.0.jar
and added as an external jar to my project.
You can see the structure of the phantomjsdriver-1.1.0.jar
is similar to what it was earlier when it was bundled with selenium-server-standalone-v.v.v.jar
Now, though my Class gets resolved through:
import org.openqa.selenium.phantomjs.PhantomJSDriver;
But I am facing a Runtime exception of java.lang.NoClassDefFoundError
as follows:
Exception in thread "main" java.lang.NoClassDefFoundError: org/openqa/selenium/browserlaunchers/Proxies
at org.openqa.selenium.phantomjs.PhantomJSDriverService.createDefaultService(PhantomJSDriverService.java:178)
at org.openqa.selenium.phantomjs.PhantomJSDriver.<init>(PhantomJSDriver.java:99)
at org.openqa.selenium.phantomjs.PhantomJSDriver.<init>(PhantomJSDriver.java:89)
at demo.A_PhantomJS.main(A_PhantomJS.java:15)
Caused by: java.lang.ClassNotFoundException: org.openqa.selenium.browserlaunchers.Proxies
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)
... 4 more
Line 15 being:
WebDriver driver= new PhantomJSDriver();
As per the error I have searched for org.openqa.selenium.browserlaunchers.Proxies
within the phantomjsdriver-1.1.0.jar unable to find any clue.
Can anyone help me out please?
This jar includes org.openqa.selenium.browserlaunchers.Proxies, try adding it to your classpath:
https://search.maven.org/remotecontent?filepath=org/seleniumhq/selenium/selenium-api/2.4.0/selenium-api-2.4.0.jar
If you miss other classes, you can search them by classname with Advanced Search on Maven Central Repository: https://search.maven.org/#advancedsearch%7Cgav
The exception tells that the required class was not found in the classpath.
As you have mentioned that you are adding PhantomJSDriver-jar
as an external dependency. Make sure you have the correct scope for the jar and it is bundled when you package your application.
Refer to this question to get better understanding of the scope.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With