poi-on-android icon indicating copy to clipboard operation
poi-on-android copied to clipboard

java.lang.NoClassDefFoundError: Failed resolution of: Ljava/awt/geom/Rectangle2D$Double;

Open lulululbj opened this issue 4 years ago • 2 comments

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 ?

lulululbj avatar Jul 10 '20 08:07 lulululbj

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?

centic9 avatar Jul 28 '20 19:07 centic9

哦直接自己定义了一个。来让他不崩溃。。。

lozn00 avatar Oct 19 '21 08:10 lozn00

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.

centic9 avatar Dec 23 '23 10:12 centic9