You need to enable JavaScript to run this app. Android集成Apache POI出现类重复定义与ClassNotFoundException如何解决
优惠活动
大模型
产品
解决方案
定价
更多

Android集成Apache POI出现类重复定义与ClassNotFoundException如何解决

Android项目Apache POI类重复冲突解决方案

冲突根本原因

你的依赖配置存在多处重复引入:

  1. 同时引入了poi-ooxml和poi-ooxml-lite两个功能重叠的包,二者本身都内置了xmlbeans相关类
  2. 额外手动引入了xmlbeans-4.0.0.jar,和POI内置的xmlbeans类重复
    桌面端Java运行时不会做严格的类唯一性校验,所以可以正常运行,但Android打包阶段会做Dex合并校验,因此会触发类重复定义报错。

修复步骤

步骤1:精简重复依赖

优先删除冗余的jar包引入,二选一保留POI-OOXML相关包,移除手动引入的xmlbeans包,修改后的依赖配置如下:

dependencies {
    implementation 'androidx.appcompat:appcompat:1.3.0'
    implementation 'com.google.android.material:material:1.4.0'
    implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
    implementation 'com.budiyev.android:code-scanner:2.1.0'
    implementation 'com.google.oauth-client:google-oauth-client-jetty:1.23.0'
    implementation 'com.google.apis:google-api-services-drive:v3-rev110-1.23.0'
    implementation files('libs\\commons-collections4-4.4.jar')
    implementation files('libs\\commons-compress-1.20.jar')
    implementation files('libs\\poi-5.0.0.jar')
    // poi-ooxml和poi-ooxml-lite二选一即可,不需要同时引入
    implementation files('libs\\poi-ooxml-5.0.0.jar')
    // 移除手动引入的xmlbeans-4.0.0.jar,poi-ooxml已内置对应依赖
    implementation 'org.jetbrains:annotations:15.0'
    testImplementation 'junit:junit:4.+'
    androidTestImplementation 'androidx.test.ext:junit:1.1.3'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
}

步骤2:添加冲突排除规则(可选,仅步骤1未生效时使用)

如果调整后仍有类重复报错,可以主动排除POI内置的xmlbeans依赖,全局仅保留一处xmlbeans引入:

implementation(files('libs\\poi-ooxml-5.0.0.jar')) {
    exclude group: 'org.apache.xmlbeans', module: 'xmlbeans'
}
// 全局仅保留这一处xmlbeans引入
implementation files('libs\\xmlbeans-4.0.0.jar')

步骤3:添加Android适配配置

POI是桌面端Java库,在Android上运行需要额外添加如下配置避免打包异常:

  1. 开启MultiDex解决方法数超限问题:
    在模块级build.gradle的defaultConfig块中添加multiDexEnabled true,同时引入依赖implementation 'androidx.multidex:multidex:2.0.1'
  2. 添加打包资源过滤规则,避免重复资源冲突:
    android {
        packagingOptions {
            pickFirst 'org/apache/xmlbeans/**/*'
            pickFirst 'META-INF/*.xml'
            pickFirst 'META-INF/*.MF'
        }
    }
    

步骤4:清理重建

修改完配置后依次执行:

  • 点击File > Invalidate Caches,勾选清空缓存并重启Android Studio
  • 重启后执行Build > Clean Project,再执行Rebuild Project

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 09:36:03