poi-on-android
poi-on-android copied to clipboard
java.lang.NoClassDefFoundError: Failed resolution of: Ljava/awt/geom/Rectangle2D$Double;
Thanks for you project very much. I find an error when I create pptx.
XMLSlideShow ppt = new XMLSlideShow();
XSLFSlide slide = ppt.createSlide();
XSLFTextBox shape = slide.createTextBox();
XSLFTextParagraph p = shape.addNewTextParagraph();
XSLFTextRun r1 = p.addNewTextRun();
r1.setText("The");
r1.setFontColor(Color.blue);
r1.setFontSize(24.0);
I add these code in DocumentListActivity.onCreate() ,and then the app crash .
2020-07-09 16:45:48.255 28666-28666/org.dstadler.poiandroidtest.poitest E/AndroidRuntime: FATAL EXCEPTION: main
Process: org.dstadler.poiandroidtest.poitest, PID: 28666
java.lang.NoClassDefFoundError: Failed resolution of: Ljava/awt/geom/Rectangle2D$Double;
at org.apache.poi.xslf.usermodel.XSLFDrawing.createTextBox(XSLFDrawing.java:76)
at org.apache.poi.xslf.usermodel.XSLFSheet.createTextBox(XSLFSheet.java:228)
at org.dstadler.poiandroidtest.poitest.DocumentListActivity.onCreate(DocumentListActivity.java:81)
at android.app.Activity.performCreate(Activity.java:8086)
at android.app.Activity.performCreate(Activity.java:8074)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1313)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3755)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3961)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:91)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:149)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:103)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2386)
at android.os.Handler.dispatchMessage(Handler.java:107)
at android.os.Looper.loop(Looper.java:213)
at android.app.ActivityThread.main(ActivityThread.java:8178)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1101)
Caused by: java.lang.ClassNotFoundException: Didn't find class "java.awt.geom.Rectangle2D$Double" on path: DexPathList[[zip file "/data/app/org.dstadler.poiandroidtest.poitest-tzTefVwTOIgUnnWo1qOEog==/base.apk"],nativeLibraryDirectories=[/data/app/org.dstadler.poiandroidtest.poitest-tzTefVwTOIgUnnWo1qOEog==/lib/arm64, /system/lib64, /system/product/lib64, /hw_product/lib64, /system/product/lib64]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:196)
at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
at org.apache.poi.xslf.usermodel.XSLFDrawing.createTextBox(XSLFDrawing.java:76)
at org.apache.poi.xslf.usermodel.XSLFSheet.createTextBox(XSLFSheet.java:228)
at org.dstadler.poiandroidtest.poitest.DocumentListActivity.onCreate(DocumentListActivity.java:81)
at android.app.Activity.performCreate(Activity.java:8086)
at android.app.Activity.performCreate(Activity.java:8074)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1313)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3755)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3961)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:91)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:149)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:103)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2386)
at android.os.Handler.dispatchMessage(Handler.java:107)
at android.os.Looper.loop(Looper.java:213)
at android.app.ActivityThread.main(ActivityThread.java:8178)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1101)
Need I add some dependencies in the build.grade ?
Android does not provide any of the java.awt.* classes, so any location where some of this is called in POI may currently cause this.
We already use a way of adding a "dummy" implementation for one or two things, if you are interested in adding support for the classes used here as well take a look at how we handle "Color" in project "poishadow" in build.gradle and the included src-files there.
Maybe you can come up with an intial PR?
哦直接自己定义了一个。来让他不崩溃。。。
Changes in the fork at https://github.com/LePat/poi-on-android/commit/d38372bd33860088c533f0838ee8830b3a945859 seem to provide some of it, you may have luck using some functionality from there.
Please send a PR if you add some classes from java.awt and think it is "good enough" for including in this project.