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

Azure IoT DPS集成报错:com.microsoft.azure.sdk.iot.deps.util.Base64类缺失

问题原因分析

出现NoClassDefFoundError是因为Azure IoT SDK各组件版本不兼容:

  • 你使用的provisioning-service-client:1.3.0依赖特定版本的iot-deps,但手动指定的iot-deps:0.15.3和该版本不匹配,导致com.microsoft.azure.sdk.iot.deps.util.Base64类缺失。
  • 手动添加iot-deps依赖是多余的,因为iot-service-client、provisioning-service-client等核心组件会自动引入适配的iot-deps版本,手动指定反而会引发版本冲突。
解决方案

方案1:移除手动指定的iot-deps依赖

直接删除pom.xml中的iot-deps依赖项,让Maven自动管理传递依赖,确保各组件依赖的iot-deps版本一致:

<!-- 移除这个依赖 -->
<!--
<dependency>
    <groupId>com.microsoft.azure.sdk.iot</groupId>
    <artifactId>iot-deps</artifactId>
    <version>0.15.3</version>
</dependency>
-->

方案2:使用Azure IoT SDK BOM统一版本(更优)

通过引入Azure IoT SDK的BOM,自动统一所有相关组件的版本,彻底避免版本冲突问题:

<dependencyManagement>
    <dependencies>
        <!-- Azure IoT SDK BOM -->
        <dependency>
            <groupId>com.microsoft.azure.sdk.iot</groupId>
            <artifactId>iot-sdk-bom</artifactId>
            <version>1.30.0</version> <!-- 和你的iot-service-client版本一致 -->
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

<!-- 之后的依赖无需指定版本,由BOM自动管理 -->
<dependencies>
    <dependency>
        <groupId>com.microsoft.azure.sdk.iot</groupId>
        <artifactId>iot-service-client</artifactId>
    </dependency>
    <dependency>
        <groupId>com.microsoft.azure.sdk.iot</groupId>
        <artifactId>iot-device-client</artifactId>
    </dependency>
    <dependency>
        <groupId>com.microsoft.azure.sdk.iot.provisioning</groupId>
        <artifactId>provisioning-service-client</artifactId>
    </dependency>
</dependencies>

方案3:检查并修复依赖冲突

如果仍有问题,执行Maven命令查看依赖树,找出冲突的iot-deps版本并排除:

mvn dependency:tree

找到冲突的依赖后,在对应的组件依赖中添加exclusions:

<dependency>
    <groupId>com.microsoft.azure.sdk.iot.provisioning</groupId>
    <artifactId>provisioning-service-client</artifactId>
    <version>1.3.0</version>
    <exclusions>
        <exclusion>
            <groupId>com.microsoft.azure.sdk.iot</groupId>
            <artifactId>iot-deps</artifactId>
        </exclusion>
    </exclusions>
</dependency>
额外说明

你的代码逻辑本身没有问题,核心问题出在依赖版本管理上。使用BOM是最推荐的方式,后续升级SDK版本只需修改BOM的version即可,无需逐个调整组件版本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 03:05:55