ClassNotFoundException Android - PullRequest
       18

ClassNotFoundException Android

6 голосов
/ 22 июня 2010

Итак, я столкнулся с проблемой сегодня, работая над моей программой для Android.У меня есть класс, который превращает эту строку XML в объект Java (сторонний), и он отлично работает как обычный проект Java, но на Android я получаю эту странную ошибку:

06-21 22:44:26.402: DEBUG/App(259): java.lang.ClassNotFoundException: com.package.mycode.Class in loader dalvik.system.PathClassLoader@4001b500
06-21 22:44:26.402: DEBUG/App(259):     at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:243)

Я скрываю свое приложениеимя и мой пакет по понятным причинам, но мне было интересно, сталкивался ли кто-нибудь с подобными проблемами.Класс находится в правильном пакете, который является библиотекой, которую я добавил.Другие классы, на которые я ссылаюсь раньше, есть, и они могут быть сделаны.Есть ли другие причины, по которым ClassNotFoundException выбрасывается?

Спасибо, Джейк

Ответы [ 6 ]

9 голосов
/ 04 февраля 2011
private static void fixClassLoaderIssue()
{
    ClassLoader myClassLoader = MyClass.class.getClassLoader();
    Thread.currentThread().setContextClassLoader(myClassLoader);
}

Это код, который у меня сейчас есть и который, я считаю, исправил эту проблему. MyClass - это просто класс, который есть в моем проекте. Как я уже сказал, коллега показал мне это, но это кажется довольно простым.

0 голосов
/ 20 августа 2013

Существуют ли другие причины, по которым генерируется исключение ClassNotFoundException?

В моем случае я получил ClassNotFoundException для моей основной деятельности при сборке apk с помощью eclipse, но при сборке с maven проблем не возникало.

Проблема заключалась в том, что моей основной деятельностью было внедрение интерфейса из простого Java-проекта "Библиотека POJO". В проекте Android> Свойства> Путь сборки Java> Порядок и экспорт мне пришлось поставить галочку, чтобы экспортировать «библиотеку POJO». После очистки проекта интерфейс был включен в classes.dex в apk и проблема была решена.

Меня направили сюда, чтобы попытаться понять проблему, и я надеюсь, что это поможет кому-то другому в такой же ситуации.

0 голосов
/ 16 февраля 2013

У меня была проблема с запуском aynctask.Раньше он работал нормально, но затем я добавил

line = StringEscapeUtils.unescapeHtml4(line);

(это библиотека commons.apache.org) в асинхронную задачу, а затем возникло множество проблем.он компилируется нормально, но когда я попытался запустить, он сказал, что класс не найден в моем классе asynctask.но когда я нажал «возобновить», он продолжал выполняться в асинхронной задаче, а затем умер.

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

0 голосов
/ 16 мая 2012

Для приложения для Android у меня возникла бы такая же проблема с внешним файлом jar. В моем случае решением было переместить jar из папки "lib" в папку "libs" на Android по умолчанию.

Когда jar находился в папке lib (также был добавлен в путь сборки), хотя в Eclipse не было проблем со сборкой, приложение выдавало ClassNotFoundException во время выполнения. После того, как я переместил банку в папку «libs», баночка стала появляться в разделе «Зависимости Android», и приложение начало работать нормально.

Это некоторые другие дискуссии на ту же тему.

Добавление библиотеки / JAR в проект Eclipse Android

Android: Как называется папка с файлами JAR (LIB или LIBS)?

Как указать папку lib для JAR-файлов при использовании файла сборки ant, созданного Android?

0 голосов
/ 22 июня 2010

В Android доступны не все классы Java, доступные на обычном компьютере. Отсутствуют некоторые классы, которые могут вызвать эту ошибку. Но это должно быть показано уже во время компиляции. Посмотрите на этот список , чтобы увидеть, какие классы поддерживаются, а какие не поддерживаются.

Опять же, я только догадываюсь, потому что компилятор должен видеть отсутствующие классы.

0 голосов
/ 22 июня 2010

Существуют ли другие причины, по которым генерируется исключение ClassNotFoundException?

IIRC, оно также может быть вызвано, если какой-либо другой класс в статических зависимостях "com.package.mycode.Class"не может быть загружен, или если есть проблема во время статической инициализации.Но они должны отображаться как вложенное исключение ... при первой попытке загрузить класс .

...