我现在正在使用poi-3.9,我将创建一个Android 6.0应用程序来使用Eclipse读取,编写和创建Excel文件。我尝试用.xls做到这一点,但它总是只读的,并且要求我将新文件另存为.xlsx,所以我现在用.xlsx这样做。
在这种情况下,据我所知,我需要poi.jar文件来使我的应用程序正常工作。所以我将poi-ooxml-schemas-3.9,poi-3.9和poi-ooxml-3.9 jar文件放入classpath中。但是,问题是它可以使用导入的XSSFWorkbook编译java,但是在运行时找不到它,并且发生NoClassDefFoundError。
以下是java中的导入
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.nio.channels.FileChannel;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.Toast;
以下是LogCat中的完整错误消息。
E/AndroidRuntime(5363): FATAL EXCEPTION: main
E/AndroidRuntime(5363): Process: com.example.rentingmanager, PID: 5363
E/AndroidRuntime(5363): java.lang.NoClassDefFoundError: Failed resolution of: Lorg/apache/poi/xssf/usermodel/XSSFWorkbook;
E/AndroidRuntime(5363): at com.example.rentingmanager.NewItem.read(NewItem.java:97)
E/AndroidRuntime(5363): at com.example.rentingmanager.NewItem.confirm(NewItem.java:323)
E/AndroidRuntime(5363): at com.example.rentingmanager.NewItem.onClick(NewItem.java:333)
E/AndroidRuntime(5363): at android.view.View.performClick(View.java:5201)
E/AndroidRuntime(5363): at android.view.View$PerformClick.run(View.java:21209)
E/AndroidRuntime(5363): at android.os.Handler.handleCallback(Handler.java:739)
E/AndroidRuntime(5363): at android.os.Handler.dispatchMessage(Handler.java:95)
E/AndroidRuntime(5363): at android.os.Looper.loop(Looper.java:148)
E/AndroidRuntime(5363): at android.app.ActivityThread.main(ActivityThread.java:5525)
E/AndroidRuntime(5363): at java.lang.reflect.Method.invoke(Native Method)
E/AndroidRuntime(5363): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:730)
E/AndroidRuntime(5363): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:620)
E/AndroidRuntime(5363): Caused by: java.lang.ClassNotFoundException: Didn't find class "org.apache.poi.xssf.usermodel.XSSFWorkbook" on path: DexPathList[[zip file "/data/app/com.example.rentingmanager-1/base.apk"],nativeLibraryDirectories=[/data/app/com.example.rentingmanager-1/lib/arm64, /vendor/lib64, /system/lib64]]
E/AndroidRuntime(5363): at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
E/AndroidRuntime(5363): at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
E/AndroidRuntime(5363): at java.lang.ClassLoader.loadClass(ClassLoader.java:469)
E/AndroidRuntime(5363): ... 12 more
E/AndroidRuntime(5363): Suppressed: java.lang.ClassNotFoundException: org.apache.poi.xssf.usermodel.XSSFWorkbook
E/AndroidRuntime(5363): at java.lang.Class.classForName(Native Method)
E/AndroidRuntime(5363): at java.lang.BootClassLoader.findClass(ClassLoader.java:781)
E/AndroidRuntime(5363): at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)
E/AndroidRuntime(5363): at java.lang.ClassLoader.loadClass(ClassLoader.java:504)
E/AndroidRuntime(5363): ... 13 more
E/AndroidRuntime(5363): Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack trace available
这就是我将JAR放在类路径
中所做的我想知道为什么以及解决问题的方法。任何答案将不胜感激,谢谢。
答案 0 :(得分:1)
这是因为在编译时发现了类,但在运行时Refer this link
时无法使用答案 1 :(得分:0)
试试这个:
在项目中转到属性 - > Java构建路径 - >订购和导出,取消选中Android Dependencies选项,做一个干净的&建立项目。
中描述了这一点