Android: Java Невозможно найти класс во время выполнения из созданного мной JAR - PullRequest
1 голос
/ 19 ноября 2010

Я работаю на примере facebook-sdk и пытаюсь использовать коллекцию классов, предоставленную как .JAR.Я относительно новичок в Java и Eclipse, поэтому я ожидаю, что я делаю некоторые очевидные ошибки.

Проблема в том, что все, кажется, компилируется нормально, но когда я запускаю проект (с помощью эмулятора Android), dalvik vm не можетчтобы найти первый класс, на который я ссылаюсь из этого Facebook SDK.(com / facebook / android / Facebook.class)

Кроме того, если я скопирую исходный код непосредственно в свой проект в качестве дополнительного пакета, все работает отлично.

Шаг 1: Я экспортировал проект com_facebook_android в виде файла .JAR.(щелкните правой кнопкой мыши проект, экспорт, файл java / jar) Я выбираю c: \ data \ jag \ jar в качестве местоположения для сохранения facebooksdk.jar.

Шаг 2. Я нажимаю свойства в проекте HelloGoogleMaps, Selected JavaПуть сборки, библиотеки, добавление внешних JARS ... Я непосредственно выбрал файл c: \ data \ jag \ jar \ facebooksdk.jar.

На данный момент мой проект, кажется, строится просто отлично (без ошибок).alt text

Шаг 3. Отладка проекта и получение ошибки:

[2010-11-19 09:05:08 - Пример] ActivityManager: Ошибка: класс активности {com.facebook.android / com.facebook.android.Example} не существует.[2010-11-19 09:05:11 - Пример] Начало действия com.facebook.android.Example на устройстве [2010-11-19 09:05:12 - Пример] Новый пакет еще не зарегистрирован в системе.Ожидание 3 секунды перед следующей попыткой.

[2010-11-19 09:05:15 - Пример] Начало действия com.facebook.android.Пример на устройстве

[2010-11-1909:05:17 - Пример] ActivityManager: Запуск: Intent {act = android.intent.action.MAIN cat = [android.intent.category.LAUNCHER] cmp = com.facebook.android / .Example}

[2010-11-19 09:05:17 - Пример] Новый пакет еще не зарегистрирован в системе.Ожидание 3 секунды перед следующей попыткой.

[2010-11-19 09:05:20 - Пример] Начало действия com.facebook.android.Пример на устройстве

[2010-11-1909:05:21 - Пример] ActivityManager: Запуск: Intent {act = android.intent.action.MAIN cat = [android.intent.category.LAUNCHER] cmp = com.facebook.android / .Example}

[2010-11-19 09:05:21 - Пример] ActivityManager: тип ошибки 3

[2010-11-19 09:05:21 - Пример] ActivityManager: Ошибка: класс активности {com.facebook.android / com.facebook.android.Example} не существует.

SHAWN - Вот свойства Android для моего проекта.

alt text

Ответы [ 3 ]

4 голосов
/ 19 ноября 2010

Когда вы устанавливали Java Build Path, вы только это и делали: устанавливали сам путь сборки.Это привело к успешной компиляции.Однако, когда создается файл .apk, система не знает, что вам нужно связать внешние jar-файлы с вашими исходными файлами.

Я не делал этого раньше, но похоже, что вы правнажмите на свой проект com_facebook_android и выберите «Свойства»> «Android», установите флажок «Библиотека».Затем перейдите в свойства Android вашего основного проекта, нажмите «Добавить» и выберите внешнюю библиотеку.Я считаю, что это будет делать то, что вам нужно.

РЕДАКТИРОВАТЬ: это называется библиотечный проект, и является довольно новым дополнением к SDK.Вы можете найти больше информации на http://developer.android.com/guide/developing/eclipse-adt.html#libraryProject

0 голосов
/ 19 ноября 2010

хорошо, не очень-то удобно, что я сделал, чтобы пройти через это.
1) Я добавил .jar в качестве внешнего jar.
2) Затем я также включил файл .apk в качестве .jar (не внешнего jar), и мне пришлось выбрать его непосредственно из com_facebook_android / bin / com_facebook_android.apk

похоже, что я решаю это грубой силой, и что-то еще было бы более уместным.

0 голосов
/ 19 ноября 2010

Я думаю, вам нужно добавить com.facebook.android как библиотеку в ваш проект ...

если я не ошибаюсь, это Android Facebook SDK.

Вы можете проверитьэта ссылка ...

См. инструкции здесь:

https://github.com/facebook/facebook-android-sdk

Надеюсь, это поможет вам ........
Благодарности

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...