4

Androidでpdfbox.jarライブラリを実行しようとしていますが、すべて正しく実行しているようです。Eclipseプラグインを使用してプロジェクトをデプロイします。コードは非常に単純で、pdfbox.jarライブラリを呼び出すだけです。

必要なすべての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は何らかの理由でjava.awt。*クラスをエクスポートすることを知らないようです。または、クラスパスに見逃したものがまだあります。

解決策があるかどうか、またはこれが有効なケースであるかどうかを知りたいのですが、dalvikが使用することを知らないjreライブラリに依存するjarを使用できません。

4

5 に答える 5

4

Androidにはほとんどのクラスが含まれていないjava.awt.*ため、そのようなクラスに依存するサードパーティのJavaライブラリは、Androidで動作するように書き直すか、単に使用しないようにする必要があります。

dalvikが使用することを知らないjreライブラリに依存するjarを使用することはできません。

より正確には、AndroidSDKに含まれていないクラスに依存するJARを使用することはできません。

于 2012-05-10T14:40:33.483 に答える
3

問題は、AndroidがAWTを最小限にサポートしていることです。

これは、AndroidがJavaプラットフォームではないことが明らかな分野の1つです。Androidには、グラフィックスとGUIを実行するための独自のスタックがあります。

解決策があるかどうか知りたいのですが...

このSOの質問(Androidでawtを使用する)には、AndroidでSwingコードを実行できる商用製品についての回答があります。よくわかりませんが、この商品はAWTにも対応していると思います。

于 2012-05-10T14:40:42.617 に答える
1

この問題は、他の人が指摘しているように、AndroidでのAWTサポートの欠如が原因です。回避策は、PDFBoxのAndroidポートを使用することです。

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

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

于 2015-07-27T07:52:34.550 に答える
0

AndroidでサポートされているAWTの唯一の部分は、フォントパッケージです。

AWTグラフィックコードをAndroidに移植する

于 2012-05-10T14:41:52.693 に答える
0

これは完璧に動作します!;-)

Birdbrain2 /PdfBox-Android

同じ問題があり、それはそれを解決しました。お役に立てれば!

于 2015-08-22T15:21:12.233 に答える