Библиотека Java в библиотеке Android, на которую ссылается проект Android, выбрасывает NoClassDefFound - PullRequest
2 голосов
/ 16 февраля 2012

У меня есть проект библиотеки Android (написанный мной и у меня есть исходники), который я использую в своем проекте Android - пока все хорошо и никаких проблем.Но в этом библиотечном проекте я ссылаюсь на иностранный файл .jar (SDK для мобильного принтера Bixolon), и он прекрасно работает, и я могу ссылаться на метод SDK в своем коде.Однако во время выполнения я получаю это:

   02-16 09:44:43.620: W/dalvikvm(25402): VFY: unable to resolve virtual method 2433: Lcom/bixolon/android/library/BxlService;.GetStatus ()I
    02-16 09:44:43.625: W/dalvikvm(25402): VFY: unable to resolve virtual method 2433: Lcom/bixolon/android/library/BxlService;.GetStatus ()I
    02-16 09:44:43.625: W/dalvikvm(25402): VFY: unable to resolve virtual method 2436: Lcom/bixolon/android/library/BxlService;.MarkFeed (I)I
    02-16 09:44:43.625: W/dalvikvm(25402): VFY: unable to resolve virtual method 2428: Lcom/bixolon/android/library/BxlService;.Directio ([BI[B[I)I
    02-16 09:44:43.630: W/dalvikvm(25402): VFY: unable to resolve virtual method 2437: Lcom/bixolon/android/library/BxlService;.PrintImage (Ljava/lang/String;III)I
    02-16 09:44:43.630: W/dalvikvm(25402): VFY: unable to resolve virtual method 2433: Lcom/bixolon/android/library/BxlService;.GetStatus ()I
    02-16 09:44:43.630: W/dalvikvm(25402): VFY: unable to resolve virtual method 2433: Lcom/bixolon/android/library/BxlService;.GetStatus ()I
    02-16 09:44:43.630: W/dalvikvm(25402): VFY: unable to resolve virtual method 2433: Lcom/bixolon/android/library/BxlService;.GetStatus ()I
    02-16 09:44:43.790: W/dalvikvm(25402): threadid=1: thread exiting with uncaught exception (group=0x4001e578)
    02-16 09:44:43.795: E/AndroidRuntime(25402): FATAL EXCEPTION: main
    02-16 09:44:43.795: E/AndroidRuntime(25402): java.lang.NoClassDefFoundError: com.bixolon.android.library.BxlService
    02-16 09:44:43.795: E/AndroidRuntime(25402):    at de.softcon.mobileapp.framework.core.bluetooth.printer.bixolon.BixolonPrinter.connectToPrinter(BixolonPrinter.java:71)
    02-16 09:44:43.795: E/AndroidRuntime(25402):    at de.softcon.mobileapp.framework.core.bluetooth.printer.PrintManager.findPrinter(PrintManager.java:101)
    02-16 09:44:43.795: E/AndroidRuntime(25402):    at de.softcon.mobileapp.framework.core.bluetooth.printer.PrintManager.getPrinter(PrintManager.java:77)

02-16 09:44:43.795: E/AndroidRuntime(25402):    at de.softcon.mobileapp.framework.core.bluetooth.printer.PrintManager.printTestReceipt(PrintManager.java:53)
02-16 09:44:43.795: E/AndroidRuntime(25402):    at de.softcon.mobileoffences.ui.Printer$1.execute(Printer.java:40)
02-16 09:44:43.795: E/AndroidRuntime(25402):    at de.softcon.mobileapp.framework.ui.Dialog.executeActions(Dialog.java:271)
02-16 09:44:43.795: E/AndroidRuntime(25402):    at de.softcon.mobileapp.framework.ui.widgets.DynamicWidget.executeActions(DynamicWidget.java:152)
02-16 09:44:43.795: E/AndroidRuntime(25402):    at de.softcon.mobileapp.framework.ui.widgets.DynamicWidget.executeActions(DynamicWidget.java:138)
02-16 09:44:43.795: E/AndroidRuntime(25402):    at de.softcon.mobileapp.framework.ui.widgets.Button$1.onClick(Button.java:67)
02-16 09:44:43.795: E/AndroidRuntime(25402):    at android.view.View.performClick(View.java:2538)
02-16 09:44:43.795: E/AndroidRuntime(25402):    at android.view.View$PerformClick.run(View.java:9152)
02-16 09:44:43.795: E/AndroidRuntime(25402):    at android.os.Handler.handleCallback(Handler.java:587)
02-16 09:44:43.795: E/AndroidRuntime(25402):    at android.os.Handler.dispatchMessage(Handler.java:92)
02-16 09:44:43.795: E/AndroidRuntime(25402):    at android.os.Looper.loop(Looper.java:130)
02-16 09:44:43.795: E/AndroidRuntime(25402):    at android.app.ActivityThread.main(ActivityThread.java:3691)
02-16 09:44:43.795: E/AndroidRuntime(25402):    at java.lang.reflect.Method.invokeNative(Native Method)
02-16 09:44:43.795: E/AndroidRuntime(25402):    at java.lang.reflect.Method.invoke(Method.java:507)
02-16 09:44:43.795: E/AndroidRuntime(25402):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:907)
02-16 09:44:43.795: E/AndroidRuntime(25402):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:665)
02-16 09:44:43.795: E/AndroidRuntime(25402):    at dalvik.system.NativeStart.main(Native Method)

Что заставляет меня задуматься, правильно ли развернут .jar, на который я ссылаюсь в моем проекте библиотеки Android ... У меня есть пример проекта от Bixolon, который напрямую включаетФайл .jar (тот же, на который я ссылаюсь в моем проекте библиотеки Android), и он отлично работает.Я уже убедился, что то же самое в моем собственном проекте Android И в моем проекте библиотеки Android (как это определено в примере проекта, предоставленного Биксолоном).Так что я сейчас немного растерялся относительно того, в чем может быть проблема.К сожалению, у меня нет исходных файлов упомянутого Bixolon SDK .jar - только .jar.

1 Ответ

2 голосов
/ 16 февраля 2012

Ознакомьтесь с официальным руководством разработчика здесь :

Библиотечный проект может включать библиотеку JAR
Вы можете разработать библиотечный проект, которыйсама включает в себя библиотеку JAR, однако вам нужно вручную отредактировать путь сборки проекта зависимого приложения и добавить путь к файлу JAR.

Помимо проекта библиотеки, вам необходимо вручную добавить jar в основной файл.Путь сборки проекта также, надеюсь, эта помощь.

Обновление с SDK r17:

Теперь это автоматически обрабатывается ADT, ознакомьтесь с новой функцией ADT 17.0.0release здесь :

Добавлена ​​функция автоматической настройки зависимостей JAR.Любые файлы .jar в папке / libs добавляются в конфигурацию сборки (аналогично тому, как работает система сборки Ant).Кроме того, файлы .jar, необходимые для библиотечных проектов, также автоматически добавляются в проекты, которые зависят от этих библиотечных проектов.( подробнее )

...