Вопрос по java, android – Системная библиотека Android JRE (java.awt. *) Отсутствует

4

Я пытаюсь запустить библиотеку pdfbox.jar на Android и, похоже, все делаю правильно. Я использую Eclipse Pluging для развертывания проекта. Код очень прост, просто вызовите библиотеку pdfbox.jar.

Все необходимые jar-файлы расположены в classpath в правильном порядке и должны быть экспортированы, пока dalvik перекомпилирует байт-код.

но все мои попытки заставить его работать не удаются, при развертывании проекта я получил следующую ошибку

<code>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
</code>
<code>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)
</code>
<code>org/apache/pdfbox/pdmodel/PDDocument implements java/awt/print/Pageable
</code>

кажется, что dalvit по каким-то причинам не знает, как экспортировать классы java.awt. *, или что-то еще я пропустил в пути к классам.

Я хотел бы знать, существует ли какое-либо решение или это допустимый случай, и я не могу использовать банки, которые зависят от библиотек jre, которые dalvik не знает, чтобы использовать.

Или вы не установили флажок для экспорта файла JAR с PDDocument. James Black

Ваш Ответ

5   ответов
0

Birdbrain2 / PdfBox-Android

Была такая же проблема, и она ее решила. Надеюсь это поможет!

3

Проблема в том, что Android имеет минимальную поддержку AWT.

Это одна из тех областей, где очевидно, что Android НЕ является платформой Java. Android имеет свой собственный стек для создания графики и графического интерфейса.

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

Это ТАК вопрос -Использование AWT с Android - в ответе упоминается коммерческий продукт, позволяющий запускать код Swing на Android. Я точно не знаю, но думаю, что этот продукт также поддерживает AWT.

1

Проблема связана с отсутствием поддержки AWT в Android, как указали другие. Обходным решением для вас может быть использование порта Android для PDFBox:

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

tldr; замените свою зависимость от gradle на PDFBox следующим: org.apache: pdfbox-андроид:latest version hereи рассмотрите возможность добавления поддержки MultiDex в свое приложение, если вы получите исключение DexIndexOverflowException.

4

Android не включает в себя большую частьjava.awt.* классы и т. д. сторонние библиотеки Java, которые зависят от таких классов, необходимо будет переписать для работы на Android или просто не использовать.

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

Точнее, вы не можете использовать JAR, которые зависят от классов, которые не включены в Android SDK.

Похожие вопросы