错误:java.lang.NoClassDefFoundError:解析失败:Lorg/apache/xmlbeans/XmlOptions;
Posted
技术标签:
【中文标题】错误:java.lang.NoClassDefFoundError:解析失败:Lorg/apache/xmlbeans/XmlOptions;【英文标题】:error: java.lang.NoClassDefFoundError: Failed resolution of: Lorg/apache/xmlbeans/XmlOptions; 【发布时间】:2017-09-19 09:50:29 【问题描述】:我正在尝试使用 Apache 将数据写入 Excel,我在这一行中遇到错误 XSSFWorkbook workbook = new XSSFWorkbook();我在下面发布了我的错误日志,请检查。
Process: app.msupply.com.ideaurben, PID: 28508
java.lang.NoClassDefFoundError: Failed resolution of: Lorg/apache/xmlbeans/XmlOptions;
at org.apache.poi.POIXMLDocumentPart.<clinit>(POIXMLDocumentPart.java:53)
at app.msupply.com.ideaurben.Adapter.ReportcateorieslistAdapter$MyViewHolder$2.onResponse(ReportcateorieslistAdapter.java:384)
at retrofit2.ExecutorCallAdapterFactory$ExecutorCallbackCall$1$1.run(ExecutorCallAdapterFactory.java:68)
at android.os.Handler.handleCallback(Handler.java:746)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5443)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
Caused by: java.lang.ClassNotFoundException: Didn't find class "org.apache.xmlbeans.XmlOptions" on path: DexPathList[[zip file "/data/app/app.msupply.com.ideaurben-1/base.apk"],nativeLibraryDirectories=[/data/app/app.msupply.com.ideaurben-1/lib/arm, /vendor/lib, /system/lib]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
at java.lang.ClassLoader.loadClass(ClassLoader.java:469)
at org.apache.poi.POIXMLDocumentPart.<clinit>(POIXMLDocumentPart.java:53)
at app.msupply.com.ideaurben.Adapter.ReportcateorieslistAdapter$MyViewHolder$2.onResponse(ReportcateorieslistAdapter.java:384)
at retrofit2.ExecutorCallAdapterFactory$ExecutorCallbackCall$1$1.run(ExecutorCallAdapterFactory.java:68)
at android.os.Handler.handleCallback(Handler.java:746)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5443)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
Suppressed: java.lang.ClassNotFoundException: org.apache.xmlbeans.XmlOptions
at java.lang.Class.classForName(Native Method)
at java.lang.BootClassLoader.findClass(ClassLoader.java:781)
at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)
at java.lang.ClassLoader.loadClass(ClassLoader.java:504)
... 11 more
Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack trace available
我的 libs 文件夹:我将所有库添加到 libs 文件夹中。
我的java类代码:
try
String FILE_NAME = "/tmp/MyFirstExcel.xlsx";
XSSFWorkbook workbook = new XSSFWorkbook();
XSSFSheet sheet = workbook.createSheet("Datatypes in Java");
Object[][] datatypes =
"Datatype", "Type", "Size(in bytes)",
"int", "Primitive", 2,
"float", "Primitive", 4,
"double", "Primitive", 8,
"char", "Primitive", 1,
"String", "Non-Primitive", "No fixed size"
;
int rowNum = 0;
System.out.println("Creating excel");
Iterator<org.apache.poi.ss.usermodel.Row> rowIterator = sheet.iterator();
for (Object[] datatype : datatypes)
Row row = sheet.createRow(rowNum++);
int colNum = 0;
for (Object field : datatype)
Cell cell = row.createCell(colNum++);
if (field instanceof String)
cell.setCellValue((String) field);
else if (field instanceof Integer)
cell.setCellValue((Integer) field);
FileOutputStream outputStream = new FileOutputStream(FILE_NAME);
workbook.write(outputStream);
// workbook.close();
catch (IOException e)
e.printStackTrace();
/*catch (JSONException e)
e.printStackTrace();
*//*catch (FileNotFoundException e)
e.printStackTrace();
*/
Build.gradel 文件如下。
apply plugin: 'com.android.application'
android
compileSdkVersion 26
buildToolsVersion "26.0.0"
defaultConfig
applicationId "app.msupply.com.ideaurben"
minSdkVersion 15
targetSdkVersion 26
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
dexOptions
jumboMode true
packagingOptions
exclude 'META-INF/DEPENDENCIES.txt'
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE.txt'
exclude 'META-INF/NOTICE'
exclude 'META-INF/LICENSE'
exclude 'META-INF/DEPENDENCIES'
exclude 'META-INF/notice.txt'
exclude 'META-INF/license.txt'
exclude 'META-INF/dependencies.txt'
exclude 'META-INF/LGPL2.1'
buildTypes
release
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
dependencies
compile fileTree(include: ['*.jar'], dir: 'libs')
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2',
exclude group: 'com.android.support', module: 'support-annotations'
)
compile 'com.android.support:appcompat-v7:26.+'
compile 'com.android.support.constraint:constraint-layout:1.0.2'
compile 'com.android.support:design:26.+'
compile 'com.android.support:support-v4:26.+'
compile 'com.squareup.retrofit2:retrofit:2.0.2'
compile 'com.squareup.okhttp3:logging-interceptor:3.0.1'
compile 'com.android.support:cardview-v7:25.2.0'
testCompile 'junit:junit:4.12'
请帮助任何人,在此先感谢。
【问题讨论】:
运行时找不到类时会出现此错误,请确保运行时没有丢失 poi-ooxml-3-9.jar。 我在我的 lib 文件夹中添加了poi-ooxml-3-9.jar
库先生。
workbook.close();也不认识我的java类先生..所以我评论了那行
workbook.close();
这一行显示编译时错误。所以我现在评论那行。
您缺少xmlbeans
jar(我在之前的评论中已链接)。你需要所有的罐子。所以不删除其他人。但是既然你标记了android
,那么看看github.com/centic9/poi-on-android也许是更好的方法。
【参考方案1】:
我想纠正其他人对 NoClassDefFoundError 的看法。
NoClassDefFoundError 可能由于多种原因而发生,例如
ClassNotFoundException
-- 找不到该引用类的 .class,无论它在编译时是否可用(即基类/子类)。
已找到类文件,但在初始化静态变量时引发异常
找到类文件,初始化静态块时引发异常
说“在编译时可用”是什么意思?
代码中使用了引用的类。 例如:两个类,A 和 B(扩展 A)。如果代码中直接引用了 B,则在编译时可用,即A a = new B();
说“在编译时不可用”是什么意思?
编译时类和运行时类是不同的,例如,基类是使用子类的类名加载的,例如 Class.forName("classname") 例如:两个类,A 和 B(扩展 A)。代码有
A a = Class.forName("B").newInstance();
【讨论】:
这一行出现错误XSSFWorkbook workbook = new XSSFWorkbook();
以上是关于错误:java.lang.NoClassDefFoundError:解析失败:Lorg/apache/xmlbeans/XmlOptions;的主要内容,如果未能解决你的问题,请参考以下文章
windows10下使用spark-2.3.0-bin-without-hadoop相关问题
远程服务器返回错误: 404错误远程服务器返回错误:500错误 HttpWebResponse远程服务器返回错误:(404500) 错误。