2015-03-18 4 views
0

Это совершенно расстраивает ... Любая помощь очень ценится.Jar library не загружается ВО ВРЕМЯ RUNTIME в Android Studio

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

В этом проблема.

Я добавил два файла jar, которые являются реализацией протокола json-rpc2. Они загружаются из следующего места.

http://software.dzhuvinov.com//download.html#download-jsonrpc2client

Файлы библиотек являются:

jsonrpc2 основанием 1.35.jar jsonrpc2-клиент-1.14.4.jar

Я добавил их в ЛИЭС папку, а затем добавили эти библиотеки щелкнув правой кнопкой мыши на них в студии. Я добавил зависимости в build.gradle моего проекта. Я очистил и построил проект. Обратите внимание, что все это время ссылки библиотеки были распознаны компилятором, и сборка была успешной. Теперь возникает проблема ... Те же библиотеки, которые были правильно распознаны во время кодирования и во время компиляции, НЕ РАБОТАЛИ ВО ВРЕМЯ РАБОТЫ. Я получаю следующее сообщение об отсутствии класса. Пожалуйста, сохраните оставшиеся волосы на голове. Благодарю.

--------- beginning of crash 

com.example.admin.myapplication E/AndroidRuntime﹕ FATAL EXCEPTION: main 
      Process: com.example.admin.myapplication, PID: 1877 
      java.lang.NoClassDefFoundError: com.thetransactioncompany.jsonrpc2.JSONRPC2Request 
        at com.example.admin.myapplication.MainActivity.accessWebService(MainActivity.java:154) 
        at com.example.admin.myapplication.MainActivity$1.onClick(MainActivity.java:55) 
        at android.view.View.performClick(View.java:4756) 
        at android.view.View$PerformClick.run(View.java:19749) 
        at android.os.Handler.handleCallback(Handler.java:739) 
        at android.os.Handler.dispatchMessage(Handler.java:95) 
        at android.os.Looper.loop(Looper.java:135) 
        at android.app.ActivityThread.main(ActivityThread.java:5221) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at java.lang.reflect.Method.invoke(Method.java:372) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) 

Ниже приведено содержимое файла build.gradle.

apply plugin: 'com.android.application' 
android { 
    compileSdkVersion 21 
    buildToolsVersion "21.1.2" 

    defaultConfig { 
     applicationId "com.example.admin.myapplication" 
     minSdkVersion 5 
     targetSdkVersion 21 
     versionCode 1 
     versionName "1.0" 
    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
} 

dependencies { 
    compile files('libs/jsonrpc2-base-1.35.jar') 
    compile files('libs/jsonrpc2-client-1.14.4.jar') 
} 
+0

Нужна 'сборки .gradle'. – songchenwen

+0

Вот содержимое build.gradle: – RamLogic

+0

Вы подтвердили, что класс com.thetransactioncompany.jsonrpc2.JSONRPC2Request находится в соответствующих библиотеках? Это класс, который вы используете напрямую? – mattm

ответ

1

@Jacky Спасибо за ваше предложение проанализируйте мой код. К счастью, между тем, как я отправил свой последний ответ, и вы отправили свое последующее предложение, я тщательно прошел через Google и Stackoverflow search spree и выяснил решение.

Для моего кода, который я опубликовал выше, требуется 3 обновления, чтобы преодолеть эту упрямую ошибку NoClassDefFound.

  1. Измените "зависимость" сценарий к следующему:

    зависимостей { компилировать (реж дерево файлов: 'LIBS', включает в себя: '* .jar')

Ключевой разницу , Я считаю, что это непритязательное ключевое слово «включить».

  1. Используйте команды «gradlew clean» и «gradlew build» из командной строки в домашней директории проекта.

  2. Если вы получили ошибки «lint», добавьте следующий код в build.gradle и повторите шаг 2 снова.

    lintOptions { abortOnError ложь }

Конечно, кредит в решении этого вопроса идет в следующих предыдущих сообщений StackOverflow:

android studio java.lang.NoClassDefFoundError:

gradle build fails on lint task

0

java.lang.NoClassDefFoundError Эта ошибка не java.lang.ClassNotFoundException поэтому это происходит только во время выполнения, а не в то время сборки, как и некоторые комментарии подозреваемых.

Основная причина может быть в том, что путь к классу приложения разрушен.

Чтобы сделать его простым, используйте сборку в инструменте в андроиде студии, чтобы добавить свой файл фляга:

1) Поместить банку файлы в директории LIBS.

2) Файл >> Структура проекта ... (или Ctrl + Alt + Shift + S) >> Зависимости >> Добавьте две фляги файл внутри LIBS >> OK

+0

В разделе «Структура проекта» я проверил, а вкладка dependecies уже показывает необходимые файлы jar. Мне не нужно добавлять что-либо новое там, как вы упомянули в шагах 1 и 2 выше ... и они указаны в префиксе lib/folder тоже ... – RamLogic

+0

Не возражаете ли вы почерпнуть весь пакет и отправить мне? Я попробую – Jacky

Смежные вопросы