gpt4 book ai didi

java - 线程 "main"java.lang.NoClassDefFoundError : org/openqa/selenium/remote/codec/w3c/W3CHttpCommandCodec 中出现异常

转载 作者:行者123 更新时间:2023-12-02 09:36:15 25 4
gpt4 key购买 nike

Exception in thread "main" java.lang.NoClassDefFoundError: org/openqa/selenium/remote/codec/w3c/W3CHttpCommandCodec

这个错误是因为依赖关系吗?我在 Stack Overflow 上检查了类似的问题,但没有想出如何解决它。

这是我的代码:

import java.io.File;
import java.net.MalformedURLException;
import java.net.URL;

import org.openqa.selenium.remote.DesiredCapabilities;

import io.appium.java_client.android.AndroidDriver;
import io.appium.java_client.android.AndroidElement;
import io.appium.java_client.remote.MobileCapabilityType;

public class base {

public static AndroidDriver<AndroidElement> Capabilities() throws MalformedURLException {

File appdir=new File("src");
File app=new File(appdir,"ApiDemos-debug.apk");

DesiredCapabilities cap = new DesiredCapabilities();
cap.setCapability(MobileCapabilityType.DEVICE_NAME,"Emulator1");
cap.setCapability(MobileCapabilityType.AUTOMATION_NAME,"uiautomator2");
cap.setCapability(MobileCapabilityType.APP, app.getAbsolutePath());
AndroidDriver<AndroidElement> driver=new AndroidDriver<>(new URL("http://127.0.0.1:4723/wd/hub"),cap);
return driver;
}

这是我运行测试后看到的:

    авг 13, 2019 11:26:55 PM io.appium.java_client.remote.AppiumCommandExecutor$1 lambda$0
INFO: Detected dialect: W3C
Exception in thread "main" java.lang.NoClassDefFoundError: org/openqa/selenium/remote/codec/w3c/W3CHttpCommandCodec
at io.appium.java_client.remote.AppiumCommandExecutor.execute(AppiumCommandExecutor.java:262)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:552)
at io.appium.java_client.DefaultGenericMobileDriver.execute(DefaultGenericMobileDriver.java:41)
at io.appium.java_client.AppiumDriver.execute(AppiumDriver.java:1)
at io.appium.java_client.android.AndroidDriver.execute(AndroidDriver.java:1)
at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:213)
at io.appium.java_client.AppiumDriver.startSession(AppiumDriver.java:323)
at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:131)
at io.appium.java_client.DefaultGenericMobileDriver.<init>(DefaultGenericMobileDriver.java:37)
at io.appium.java_client.AppiumDriver.<init>(AppiumDriver.java:86)
at io.appium.java_client.AppiumDriver.<init>(AppiumDriver.java:96)
at io.appium.java_client.android.AndroidDriver.<init>(AndroidDriver.java:94)
at base.Capabilities(base.java:22)
at basics.main(basics.java:12)
Caused by: java.lang.ClassNotFoundException: org.openqa.selenium.remote.codec.w3c.W3CHttpCommandCodec
at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 14 more

最佳答案

您正在遭受一种 Jar Hell 的困扰由于:

  1. Appium Java Client 7.0.0Selenium Java 3.141.59作为其 transitive dependencies 的一部分
  2. 您明确声明 Selenium Java Client 3.12.0作为您的项目依赖项
  3. Java Classloading选择了错误的类,且 API 和依赖项不匹配 - 这就是您收到此错误的原因

解决方案是从项目依赖项/类路径中删除 Selenium Java Client 3.12.0,Maven 将自行解析所需的依赖项。

参见Appium - Code Examples - Java文章了解更多信息和示例项目。

关于java - 线程 "main"java.lang.NoClassDefFoundError : org/openqa/selenium/remote/codec/w3c/W3CHttpCommandCodec 中出现异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57485697/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com