首页 > 解决方案 > java.lang.NoClassDefFoundError:解析失败:Lorg/apache/poi/xssf/usermodel/XSSFWorkbook

问题描述

我正在将 Apache POI 库用于 excel 文件,并希望将 .xls 文件转换为 .xlsx 文件。为此我创建了一个方法convertXLS2XLSX,这里是代码示例

public static String convertXLS2XLSX(String xlsFilePath) {
    String XLSX = ".xlsx";
    try {
        InputStream inputStream = new FileInputStream(xlsFilePath);
        String xlsxFilePath = xlsFilePath.substring(0, xlsFilePath.lastIndexOf('.')) + XLSX;
        Workbook workbookIn = new HSSFWorkbook(inputStream);
        xlsxFile = new File(xlsxFilePath);
        if (xlsxFile.exists())
            xlsxFile.delete();
        workbookOut = new XSSFWorkbook(); // <------- Error in this line
        ....
     }}

在上面的代码中,我得到

FATAL EXCEPTION: main
Process: com.fabercomputing.tessocr, PID: 11630
java.lang.NoClassDefFoundError: Failed resolution of: Lorg/apache/poi/xssf/usermodel/XSSFWorkbook;
    at com.fabercomputing.tessocr.utility.Utility.convertXLS2XLSX(Utility.java:403)
    at com.fabercomputing.tessocr.activity.FormatDetailActivity.init(FormatDetailActivity.java:188)
    at com.fabercomputing.tessocr.activity.FormatDetailActivity.bindUI(FormatDetailActivity.java:130)
    at com.fabercomputing.tessocr.activity.FormatDetailActivity.onCreate(FormatDetailActivity.java:106)
    at android.app.Activity.performCreate(Activity.java:7335)
    at android.app.Activity.performCreate(Activity.java:7326)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1275)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3119)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3282)
    at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
    at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
    at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1970)
    at android.os.Handler.dispatchMessage(Handler.java:106)
    at android.os.Looper.loop(Looper.java:214)
    at android.app.ActivityThread.main(ActivityThread.java:7156)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:494)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:975)
 Caused by: java.lang.ClassNotFoundException: Didn't find class "org.apache.poi.xssf.usermodel.XSSFWorkbook" on path: DexPathList[[zip file "/data/app/com.fabercomputing.tessocr-V-yP01R_Ri4ddkMUw--BFw==/base.apk"],nativeLibraryDirectories=[/data/app/com.fabercomputing.tessocr-V-yP01R_Ri4ddkMUw--BFw==/lib/arm, /data/app/com.fabercomputing.tessocr-V-yP01R_Ri4ddkMUw--BFw==/base.apk!/lib/armeabi-v7a, /system/lib, /system/vendor/lib]]

这是 build.gradle

// https://mvnrepository.com/artifact/org.apache.poi/poi
implementation group: 'org.apache.poi', name: 'poi', version: '4.1.0'
// https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml
implementation group: 'org.apache.poi', name: 'poi-ooxml', version: '4.1.0'
// https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml-schemas
implementation group: 'org.apache.poi', name: 'poi-ooxml-schemas', version: '4.1.0' // N
// https://mvnrepository.com/artifact/org.apache.poi/poi-scratchpad
implementation group: 'org.apache.poi', name: 'poi-scratchpad', version: '4.1.0'
// https://mvnrepository.com/artifact/org.apache.poi/poi-excelant
implementation group: 'org.apache.poi', name: 'poi-excelant', version: '4.1.0'
// https://mvnrepository.com/artifact/org.apache.poi/poi-contrib
implementation group: 'org.apache.poi', name: 'poi-contrib', version: '3.7-beta3'
// https://mvnrepository.com/artifact/org.apache.poi/poi-examples
implementation group: 'org.apache.poi', name: 'poi-examples', version: '4.1.0'

标签: androidexcelxmlapache-poi

解决方案


推荐阅读