Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android JRE System library (java.awt.*) is missed

Tags:

java

android

I'm trying to run pdfbox.jar library on Android and seems like I do everything right. I use Eclipse pluging to deploy the project. The code is very simple just call for pdfbox.jar library.

All required jars are located in classpath in correct order and should be exported while dalvik recompiles the byte-code.

but all my attempts to get it work is failed, when I deploy the project I got the following error

05-10 13:53:42.590: I/dalvikvm(14009): Failed resolving Lorg/apache/pdfbox/pdmodel/PDDocument; interface 911 'Ljava/awt/print/Pageable;'
05-10 13:53:42.590: W/dalvikvm(14009): Link of class 'Lorg/apache/pdfbox/pdmodel/PDDocument;' failed
05-10 13:53:42.590: E/dalvikvm(14009): Could not find class 'org.apache.pdfbox.pdmodel.PDDocument', referenced from method com.ibm.ext.pdf.PDFExtractor.extractText

05-10 13:53:54.881: E/AndroidRuntime(14009): FATAL EXCEPTION: main
05-10 13:53:54.881: E/AndroidRuntime(14009): java.lang.NoClassDefFoundError: org.apache.pdfbox.pdmodel.PDDocument
05-10 13:53:54.881: E/AndroidRuntime(14009):    at com.ibm.ext.pdf.PDFExtractor.extractText(PDFExtractor.java:52)
05-10 13:53:54.881: E/AndroidRuntime(14009):    at com.ibm.ext.pdf.PDFBoxActivity.onCreate(PDFBoxActivity.java:14)
05-10 13:53:54.881: E/AndroidRuntime(14009):    at android.app.Activity.performCreate(Activity.java:4465)
05-10 13:53:54.881: E/AndroidRuntime(14009):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
05-10 13:53:54.881: E/AndroidRuntime(14009):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)
05-10 13:53:54.881: E/AndroidRuntime(14009):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
05-10 13:53:54.881: E/AndroidRuntime(14009):    at android.app.ActivityThread.access$600(ActivityThread.java:123)
05-10 13:53:54.881: E/AndroidRuntime(14009):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
05-10 13:53:54.881: E/AndroidRuntime(14009):    at android.os.Handler.dispatchMessage(Handler.java:99)
05-10 13:53:54.881: E/AndroidRuntime(14009):    at android.os.Looper.loop(Looper.java:137)
05-10 13:53:54.881: E/AndroidRuntime(14009):    at android.app.ActivityThread.main(ActivityThread.java:4424)
05-10 13:53:54.881: E/AndroidRuntime(14009):    at java.lang.reflect.Method.invokeNative(Native Method)
05-10 13:53:54.881: E/AndroidRuntime(14009):    at java.lang.reflect.Method.invoke(Method.java:511)
05-10 13:53:54.881: E/AndroidRuntime(14009):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
05-10 13:53:54.881: E/AndroidRuntime(14009):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
05-10 13:53:54.881: E/AndroidRuntime(14009):    at dalvik.system.NativeStart.main(Native Method)

org/apache/pdfbox/pdmodel/PDDocument implements java/awt/print/Pageable

it seems that dalvit doesn't know to export java.awt.* classes for some reason or there is still something that I missed in the classpath.

I'd like to know whether there is any solution or this is valid case and I can't use jars which are depend on jre libraries that dalvik doesn't know to use.

like image 568
Denis Voloshin Avatar asked Feb 21 '23 13:02

Denis Voloshin


2 Answers

Android does not include most of the java.awt.* classes, and so third-party Java libraries that depend upon such classes would need to be rewritten to work on Android, or simply not used.

I can't use jars which are depend on jre libraries that dalvik doesn't know to use.

More accurately, you cannot use JARs which depend on classes that the Android SDK does not include.

like image 117
CommonsWare Avatar answered Mar 03 '23 22:03

CommonsWare


The problem is that Android has minimal support for AWT.

This is one of those areas where it is clear that Android is NOT a Java platform. Android has its own stack for doing graphics and GUIs.

I'd like to know whether there is any solution ...

This SO question - Using awt with android - has an answer mentions a commercial product that allows you to run Swing code on Android. I don't know for sure, but I imagine that this product supports AWT as well.

like image 25
Stephen C Avatar answered Mar 03 '23 22:03

Stephen C