Библиотека Java в библиотеке Android, на которую ссылается проект Android, выдает NoClassDefFound

StackOverflow https://stackoverflow.com/questions/9308331

Вопрос

У меня есть проект библиотеки 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).Так что я сейчас немного в растерянности относительно того, в чем может быть проблема.К сожалению, у меня нет исходных файлов указанного Bixolon SDK .jar — только .jar.

Это было полезно?

Решение

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top