java - 如何从具有相同结构的不同 jar 解析我的类

标签 java selenium jar phantomjs classnotfoundexception

如何从具有相同结构的不同 jar 解析我的类

Note : Though the jars in question contains the word selenium but the question here have no direct relation with selenium

几天前 PhantomJSDriverselenium-server-standalone-v.v.v.jar 捆绑发布。所以我的类(class)工作正常:

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");
    }
}

现在 selenium-server-standalone-v.v.v.jar 不会为 PhantomJSDriver 依赖项捆绑 jar。

所以我下载了 jar phantomjsdriver-1.1.0.jar 并作为外部 jar 添加到我的项目中。

您可以看到 phantomjsdriver-1.1.0.jar 的结构与之前与 selenium-server-standalone-v.v.v.jar 捆绑时的结构类似>

PhantomJSDriver

现在,虽然我的类(class)通过以下方式得到解决:

import org.openqa.selenium.phantomjs.PhantomJSDriver;

但是我遇到了 java.lang.NoClassDefFoundError 的运行时异常,如下所示:

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

第 15 行是:

WebDriver driver= new PhantomJSDriver();

根据错误,我在 phantomjsdriver-1.1.0.jar 中搜索了 org.openqa.selenium.browserlaunchers.Proxies 找不到任何线索。

NoClassDefFoundError

有人能帮帮我吗?

最佳答案

这个 jar 包含 org.openqa.selenium.browserlaunchers.Proxies,尝试将它添加到您的类路径中:

https://search.maven.org/remotecontent?filepath=org/seleniumhq/selenium/selenium-api/2.4.0/selenium-api-2.4.0.jar

如果您错过了其他类,您可以使用 Maven 中央存储库上的高级搜索按类名搜索它们:https://search.maven.org/#advancedsearch%7Cgav

关于java - 如何从具有相同结构的不同 jar 解析我的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48192621/

相关文章:

google-chrome - 如何从命令行将假媒体流传递给 Firefox?

xpath - Selenium xpath 查询

java - 将 .jar 加载到网页上,而用户无法访问它

java - linkedList 的 toString 方法

java - "Argument is not an array"使用Java反射设置数组值时出现异常

excel - 使用 Python Selenium 下载 Excel 文件

java - 如何配置 Maven 使用 GWT 模块源进行编译但不将它们包含在最终的 JAR/WAR 中?

java - 在运行时加载 jar

java - 检测Android App收到扫描请求时是否发送BLE扫描响应

Java : string. 替换(oldChar,newChar)忽略另一个命令