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

Android平台ONVIF WS-Discovery实现及Evercam类加载异常求助

解决Evercam库在Android上的ClassNotFoundException(net.sbbi.upnp.Discovery)

我之前在Android项目里整合Evercam做ONVIF功能时,也踩过这个类找不到的坑,结合你的堆栈信息来看,这个问题基本是依赖缺失或者打包配置导致运行时找不到upnp相关类,给你几个靠谱的解决方向:

  • 补全依赖项
    Evercam库依赖了sbbi-upnp这个第三方UPNP库,但很多时候只引入Evercam本身的依赖是不够的。你需要在项目的build.gradle(Module level)里添加这个依赖:

    implementation 'net.sbbi:upnplib:1.0.4'
    

    同时要确保你的仓库配置里包含了能拉取这个库的源,比如mavenCentral()或者jcenter()(如果还能用的话)。

  • 排除ProGuard的混淆影响
    如果你的项目开启了ProGuard混淆,很可能它把net.sbbi.upnp下的类当成无用代码给移除了。打开proguard-rules.pro,添加以下规则保护这些类:

    -keep class net.sbbi.upnp.** { *; }
    -keep interface net.sbbi.upnp.** { *; }
    

    之后clean项目再重新构建。

  • 检查打包配置
    如果你用了Android App Bundle或者动态特性模块,要确认sbbi-upnp的依赖是添加在主模块的build.gradle里,而不是某个动态模块。动态模块的依赖不会默认打包进主APK,导致运行时找不到类。

  • 手动引入Jar包(兜底方案)
    如果依赖管理工具拉取库有问题,可以直接下载sbbi-upnplib的jar包(对应版本),放到项目的libs目录下,然后在build.gradle里添加:

    implementation files('libs/upnplib-1.0.4.jar')
    

另外提醒一下:你遇到的是NoClassDefFoundError,不是编译时的ClassNotFoundException,这说明编译时类是存在的,但运行时类路径里找不到,所以重点排查运行时的类打包情况。

内容的提问来源于stack exchange,提问作者Nilotpal Roychowdhury

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:51:29