You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Appium测试用例抛出异常求助:缺失javax.websocket相关类

解决Appium初始化时的javax.websocket.DeploymentException缺失问题

你遇到的这个NoClassDefFoundError,本质是Appium Java Client依赖的WebSocket相关类未被正确引入。从错误栈能看出来,ListensToLogcatMessages类初始化时需要javax.websocket.DeploymentException,但你的项目里缺少这个类所在的Jar包,导致类加载失败。

问题根源

Appium Java Client从7.x版本开始,为了实现Logcat监听功能引入了WebSocket机制,这就需要额外的Java WebSocket API依赖。很多旧教程没有同步更新这部分内容,所以你按教程添加的Jar包里,并没有包含这些必要的依赖文件。

两种可行解决方案

方案1:补充WebSocket相关依赖Jar包

你需要下载并手动引入以下Jar包到Eclipse项目的Build Path中:

  • javax.websocket-api-1.1.jar:提供WebSocket核心API类
  • tyrus-standalone-client-1.17.jar:WebSocket的客户端实现(也可以分开引入tyrus-client和tyrus-container-grizzly-client两个Jar包)

这些Jar包可以从Maven中央仓库获取稳定版本,下载后右键项目 → Build Path → Add External Archives添加即可。

方案2:降级Appium Java Client版本

如果不想额外添加依赖,可以把Appium Java Client降级到6.x版本(比如6.1.0)。这个版本的客户端还没有引入WebSocket依赖,和你参考的旧教程兼容性更好,能直接适配现有Jar包配置。

验证步骤

  1. 完成依赖调整后,右键你的Eclipse项目 → Clean清理项目缓存
  2. 重新运行测试用例,应该就能成功初始化AndroidDriver了

你的测试代码

import java.net.MalformedURLException;
import java.net.URL;
import org.openqa.selenium.remote.CapabilityType;
import org.openqa.selenium.remote.DesiredCapabilities;
import io.appium.java_client.AppiumDriver;
import io.appium.java_client.MobileElement;
import io.appium.java_client.android.AndroidDriver;

public class AppiumTest {
    public static void main(String[] args) {
        //Set the Desired Capabilities
        DesiredCapabilities caps = new DesiredCapabilities();
        caps.setCapability("deviceName", "SM-T211");
        caps.setCapability("udid", "41022b138d311100"); //Give Device ID of your mobile phone
        caps.setCapability("platformName", "Android");
        caps.setCapability(CapabilityType.VERSION, "4.4.2");
        caps.setCapability("appPackage", "com.isinolsun.app");
        caps.setCapability("appActivity", "com.isinolsun.app.activities.OnBoarderActivity");
        caps.setCapability("noReset", "true");

        //Instantiate Appium Driver
        try {
            AppiumDriver<MobileElement> driver = new AndroidDriver<MobileElement>(new URL("http://0.0.0.0:4723/wd/hub"), caps);
            driver.closeApp();
        } catch (MalformedURLException e) {
            System.out.println(e.getMessage());
        }
    }
}

报错信息

Exception in thread "main" java.lang.NoClassDefFoundError: javax/websocket/DeploymentException
    at io.appium.java_client.android.ListensToLogcatMessages.<clinit>(ListensToLogcatMessages.java:34)
    at com.appiumtest.firsttestscript.AppiumTest.main(AppiumTest.java:27)
Caused by: java.lang.ClassNotFoundException: javax.websocket.DeploymentException
    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)
    ... 2 more

内容的提问来源于stack exchange,提问作者Muhammad Danish Qureshi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 07:17:20