Android-приложение не может найти класс GsonBuilder

Я создал пользовательский JAR для выполнения транзакций JSON. Внутри пользовательского jar у меня есть файл gson-2.2.4.jar. Баночка находится в папке res.

Когда я включаю свой собственный jar в свое приложение и пытаюсь запустить его, я получаю следующее исключение RunTime

09-13 14:25:39.411: ERROR/AndroidRuntime(988): FATAL EXCEPTION: AsyncTask #1
        java.lang.RuntimeException: An error occured while executing doInBackground()
        at android.os.AsyncTask$3.done(AsyncTask.java:299)
        at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:352)
        at java.util.concurrent.FutureTask.setException(FutureTask.java:219)
        at java.util.concurrent.FutureTask.run(FutureTask.java:239)
        at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
        at java.lang.Thread.run(Thread.java:856)
        Caused by: java.lang.NoClassDefFoundError: com.google.gson.GsonBuilder
        at com.company.mobile.rest.RestAccessObject.call(RestAccessObject.java:42)
        at com.company.mobile.rest.ContactsRAO.getContacts(ContactsRAO.java:25)
        at com.company.mobile.activity.ContactActivity$JSONOperation.executeRAO(ContactActivity.java:130)
        at com.company.mobile.activity.ContactActivity$JSONOperation.doInBackground(ContactActivity.java:89)
        at com.company.mobile.activity.ContactActivity$JSONOperation.doInBackground(ContactActivity.java:81)
        at android.os.AsyncTask$2.call(AsyncTask.java:287)
        at java.util.concurrent.FutureTask.run(FutureTask.java:234)
        ... 4 more

В качестве временного шага я добавил gson-2.2.4.jar в папку lib приложения Android. Тем не менее я получил ту же ошибку.

Нужно ли что-то добавить к моему манифесту в моем пользовательском jar-файле, чтобы сделать gson-2.2.4.jar внутри него доступным для всех других классов? Или это что-то с моей структурой проекта Android?

Спасибо за вашу помощь.

1 ответ

Я создал пользовательский JAR для выполнения транзакций JSON. Внутри пользовательского jar у меня есть файл gson-2.2.4.jar.

Это не сработает, если вы действительно не имеете в виду "Внутри пользовательского JAR [у вас] есть содержимое gson-2.2.4.jar файл".

Баночка находится в папке res.

Это, конечно, не будет работать.

В качестве временного шага я добавил gson-2.2.4.jar в папку lib приложения Android.

Положите свой JAR в libs/, И рассмотрите возможность избавиться от своей копии классов Gson из этого пользовательского JAR и использовать отдельный JSON Gson также в libs/,

Если вы используете Eclipse, убедитесь, что часть "Порядок и экспорт" вашего пути сборки настроена правильно.

Другие вопросы по тегам