2012-05-10 20 views
3

私はAndroid上でpdfbox.jarライブラリを実行しようとしています。 Eclipseプラグインを使用してプロジェクトをデプロイします。 コードはpdfbox.jarライブラリを呼び出すだけで非常に簡単です。Android JREシステムライブラリ(java.awt。*)が見つかりません

必要なすべてのjarは正しい順序でクラスパスに配置されており、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が」doesnのようです何らかの理由で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プラットフォームではないことが明らかな分野の1つです。 Androidには、グラフィックとGUIを実行するための独自のスタックがあります。

私はどんな解決策があるかどうかを知りたいのですが...

このSO質問 - Using awt with androidは - 答えは、あなたは、Android上でSwingのコードを実行することを可能にする商用製品に言及しています。私は確かに分かりませんが、この製品はAWTもサポートしていると思います。

1

問題は、他の人が示されているように、アンドロイドでAWTのサポートの欠如によるものです。回避策あなたがアンドロイドPDFBoxのポートを使用する可能性がために:

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

tldrを。は、PDFBoxのgradle依存関係を次のように置き換えます。 org。apache:pdfbox-android:最新バージョンはこちら、DexIndexOverflowException例外が発生した場合は、アプリにMultiDexサポートを追加することを検討してください。

+0

私もアンドロイドとpdfboxで同じ問題を抱えています! PdfBoxについて - Androidについて、私はそれをdonwloadしましたが、どうすればよいですか? - > Zipファイルを/ libsに展開するだけですか? - >どのようにAndroidプロジェクトに参加させるのですか? ありがとうございます。 – Steph68

0

これは完全に機能します。 ;-)

Birdbrain2/PdfBox-Android

は同じ問題を抱えていたし、それを解決しました。お役に立てれば!

関連する問題