android - 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'
解决方案
推荐阅读
- java - 为什么在我订阅 DolphinDB java api 时返回此错误消息
- django - 如何防止用户同时是两种类型?
- electron - 电子 winstaller 在错误的组中创建快捷方式
- javascript - 在表单内提交按钮而不重新加载表单
- oracle-data-integrator - 如何在不登录 ODI studio 的情况下检查 ODI 12c 中的 Dataserver(拓扑下)连接性?
- java - 我被困在Java中的这个作业中。有人可以帮我吗
- jquery - Owl Carousel 2 同步滑块按钮无法正常工作
- html - 在ts中访问fileReader onload函数中的变量
- arrays - Angular 将菜单项附加到 Const
- laravel - 在亚马逊 ec2 ubuntu 服务器中找不到 404 错误