2012-05-10 67 views
3

我試圖在Android上運行pdfbox.jar庫,看起來像我一切正常。 我使用Eclipse pluging來部署項目。 代碼非常簡單,只需調用pdfbox.jar庫即可。Android JRE系統庫(java.awt。*)丟失

所有需要的jar都以正確的順序位於classpath中,並應在dalvik重新編譯字節碼時導出。

,但我所有的努力得到它的工作是失敗的,當我部署我有以下錯誤

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 

項目似乎dalvit沒有按」由於某種原因,我知道要導出java.awt。*類,或者仍然有一些我在類路徑中遺漏的東西。

我想知道是否有任何解決方案或這是有效的情況下,我不能使用依賴於dalvik不知道使用的jre庫的jar。

+0

或者您沒有選中該框來導出具有PDDocument的jar文件。 –

回答

3

Android不包括大部分java.awt.*類,因此依賴這些類的第三方Java庫需要重寫才能在Android上工作,或者完全不使用。

我不能使用依賴於dalvik不知道使用的jre庫的jar。

更準確地說,您不能使用依賴於Android SDK不包含的類的JAR。

2

問題是Android對AWT的支持很少。

這是明顯Android不是Java平臺的領域之一。 Android有自己的圖形和圖形用戶界面。

我想知道是否有任何解決方案...

這太問題 - Using awt with android - 有一個答案提到一個商業產品,可以讓你在Android上運行的Swing代碼。我不確定,但我想這個產品也支持AWT。

1

的問題是由於缺乏對Android的AWT支持,正如其他人指出。一個變通你可能會使用PDFBox的的android的端口:

https://github.com/Birdbrain2/PdfBox-Android

tldr;用這個代替你對PDFBox的gradle依賴: org。apache:pdfbox-android:最新版本在這裏,並考慮添加MultiDex支持到你的應用程序,如果你得到一個DexIndexOverflowException異常。

+0

我也有同樣的問題,與android和pdfbox! 關於PdfBox-Android,我把它裝好了,好的,但我應該怎麼使用它? - >只需將ZIP文件解壓到/ libs中? - >如何讓它成爲我的Android項目的一部分? 謝謝。 – Steph68