Caused by java lang classnotfoundexception android

Java.lang.ClassNotFoundException в рабочем приложении

Я создал и опубликовал свое первое приложение для Android. Это очень просто. Он отлично работает на симуляторе и некоторых телефонах, но я получаю эту ошибку:

Любая идея, что может вызвать это?

Да, у меня была такая же проблема. Это связано с тем, что я указал атрибут android:name в приложении node в файле манифеста.

Ваш файл манифеста Android, вероятно, выглядит примерно так:

Не используйте атрибут android:name ! если вы не внедрили собственный объект приложения.

Атрибут application:name не имеет ничего общего с именем вашего приложения. Это имя определенного класса для загрузки в качестве экземпляра Application . Вот почему вы получили бы ClassNotFoundException , если бы этот класс не существовал.

Вместо имени приложения используйте атрибут android:label в этом же приложении node.

Удалите его, и он должен работать:

Что-то подобное произошло, когда я изменил цель сборки на 3.2. После копания я обнаружил, что a назвал папку jar lib lib вместо “libs”. Я просто переименовал его в libs и обновил ссылки на пути сборки Java, и все снова работало. Может быть, это поможет кому-то…

У нас есть несколько проектов, в которых эта проблема время от времени регистрировалась на Android Market. Я обнаружил следующие проблемы в манифесте:

Если имя пакета com.test, имена действий должны быть .ActivityName (с ведущей точкой), а не только ActivityName .

Для некоторых классов, которые чаще всего появлялись в журналах, имя класса было указано как com.test.Name , тогда как оно должно было быть .Name .

Я предполагаю, что многие реализации Android справляются с этими незначительными проблемами успешно (поэтому исключение никогда не происходило при тестировании), в то время как другие немногие бросают исключение.

Имела ту же ошибку: java.lang.RuntimeException: Не удалось создать экземпляр активности (classnotfound)
ПЕРВАЯ попытка изменить платформу сборки (2.3.3 → 2.2 → 2.3.3) работала для меня.

Это мое наблюдение в отношении ошибки. Недавно я обновил ADT до 22.0.1.
Я получаю следующую ошибку, когда импортировал мои предыдущие проекты
“E/AndroidRuntime (24807): вызвано: java.lang.ClassNotFoundException: com.sherl.sherlockfragmentsapp.StartActivity в загрузчике dalvik.system.PathClassLoader [/data/app/com.sherl.sherlockfragmentsapp-1.apk]”

Затем я изменил “Properties- > Java Build Path- > Order and Export” следующим образом
Невозможно добавить изображение из-за правил форума.

  • Частные библиотеки Android – отмечены
  • Android 4.2.2 – снят флажок
  • Android Dependencies – отмечен
  • /src – selected
  • /gen – selected

Это решило проблему. Надеюсь, это поможет вам, ребята.

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

Читайте также:  Wireless security system with android app

Итак, я получал эту ошибку, и через несколько часов смущенно понял, что я снял флажок “Project > Build Automatically”. Поэтому, хотя у меня не было ошибок компиляции, вот почему я получал эту ошибку. Все началось, как только я понял, что на самом деле я не строил проект до развертывания: -/

Хорошо, что моя история: -)

У вас возникла такая проблема сегодня после обновления до последнего ADT/SDK. Взял меня довольно долго. Проверено, что я использовал google-apis (для карт), использует-библиотеку, очистил проект и т.д.

Удаление .project и добавление нового (создайте новый проект для Android), наконец, решило его.

У меня иногда возникает проблема с eclipse. Для меня это исправлено – перейти в Project Properties/Android и изменить API-интерфейс сборки для другой версии и опубликовать ее. Я найду, что исправил его, затем я могу изменить его на желаемую цель сборки.

Вам может потребоваться проверить proguard.cfg.

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

С этим я немного потрудился после того, как мое приложение работало напрямую с эмулятором или устройством из eclipse. Проблема, с которой я столкнулась, заключалась в том, что после того, как приложение было опубликовано (т.е. Прошло через proguard) и запущено на устройстве, в нем отсутствовали классы, которые содержались в проекте. Их каким-то образом лишили.

Моя проблема может быть вызвана, когда я попытался использовать IntelliJ и переключился обратно на затмение.

Вот файл proguard, который работал у меня:

В моем случае мне пришлось добавить android:name=».activity.SkeletonAppActivity»
вместо android:name=».SkeletonAppActivity» в файле манифеста для основного действия.
SkeletonAppActivity был в другом пакете из класса приложения. Удачи!

Убедитесь, что android:hasCode не установлен в false в вашем файле манифеста. Это и решило проблему для меня!

Я получил эту ошибку, когда я запустил приложение в более ранних версиях Android. Я думал, что SearchView был обратно совместим с Android 1.5, но был создан в версии 3.0. Я удалил ссылку из кода, и он сработал.

У вас есть java.lang.ClassNotFoundException. Это означает, что класс отсутствует во время выполнения приложения. Вы должны проверить, что вы добавили все свои библиотеки в путь сборки.

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

В моем случае значок приложения вызывал ошибку:

Почему? Потому что я помещаю значок только в папку “drawable”, и я использую устройство для тестирования с высоким разрешением, поэтому он выглядит в папке “drawable-hdpi” для значка. Поведение по умолчанию для всего остального – использовать значки из “drawable”, если они не находятся в “drawable-hdpi” . Но для значка запуска это не кажется действительным.

Читайте также:  Openvpn android antizapret tcp

Итак, решение состоит в том, чтобы поместить копию значка (с тем же именем, конечно) в “drawable-hdpi” (или в зависимости от поддерживаемых разрешений, которые есть у устройств).

Я использовал метод супертипа, который был объявлен “final” в одном из моих действий (в частности, метод isResumed() “). Фактическая ошибка отображается в LogCat только после перезапуска моего устройства разработки.

Ошибка Class Not Found показывает, что ваши файлы классов отсутствуют. Перейдите в Свойствa > Путь сборки Java и добавьте свой пакет, содержащий ваши java файлы, на вкладку Источник, если она отсутствует. Затем создайте свой проект. Это создаст отсутствующие файлы .class.

Недавно я вложил некоторое время в аналогичный отчет об ошибке, который дошел до меня через отчеты об ошибках в хранилище.

Обзор некоторых возможных причин.

Отсутствует библиотека

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

Очистка и создание проекта может помочь, если это локальная проблема и убедитесь, что у вас установлена ​​последняя версия SDK и IDE.

В этих случаях используется один класс вашего приложения или библиотека, используемая в вашем приложении, которая вызывает ошибку. Это важное различие со следующей точкой, в которой точка входа (Activity with MAIN intent или ваш пользовательский сервис/объект приложения) не найден.

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

Основная активность или приложение не найдено

Неверная настройка AndroidManifest.xml

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

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

Ive отредактировал этот ответ, это важная часть:

Не используйте атрибут android: name! если вы не внедрили пользовательский объект приложения.

Атрибут application: name не имеет ничего общего с именем вашего приложение. Это имя определенного класса для загрузки в качестве приложения пример. Вот почему вы получите ClassNotFoundException, если это класса не будет.

Для имени приложения используйте атрибут android: label на этом же приложение node.

Подавлено: java.io.IOException: невозможно открыть файл DEX

Теперь это становится интересным! Это было частью трассировки стека, записанной в моем случае через игровой магазин. Поэтому я могу создать сборку и выполнить ее на своем устройстве без ошибок (тогда как все предыдущие ошибки предотвратили бы любой прогон).

Похоже, что системе не удалось открыть файл приложения dex java.io.IOException: не удалось открыть файл DEX, это до того, как загрузится какой-либо из ваших классов, поэтому он не имеет никакого отношения к тому, как вы определяете свой класс приложения в манифесте. – user2046264 27 Фев ’14 в 2:25

Важной частью здесь является подавленное исключение IOException. Это означает, что операция ввода-вывода завершилась неудачно. Примерами операций ввода-вывода являются вызовы сети и хранилища.

Читайте также:  Get current position listview android

Еще один отчет об ошибке, который идет в этом направлении, указан в Android, чтобы не удалось создать экземпляр приложения java.lang.ClassNotFoundException:, где роль внешнего хранилища, предоставляемого sdcard упоминается.

Некоторые другие подобные вопросы указывают на то, что это может быть ошибка пользователя. “/mnt/asec/…” указывает, что приложение запускается с SD-карты. Если SD-карта удалена, это может привести к этой ошибке. Сторонние приложения или укорененные устройства, вероятно, могут перенести приложение на SD-карту, даже если оно не разрешено манифестом.

Если вы отчаянно прочитали все ответы на этот вопрос, так как есть и другие пути. Подумайте о полной спецификации пакета, использовании синглтонов и т.д.

Дело в том, что и сеть, и хранилище являются IO.

В моем конкретном случае я проверил все устройства, сообщившие об этой ошибке, и обнаружил, что у них есть внешняя поддержка хранилища. Таким образом, пользователь может установить приложение и перенести его на внешнее хранилище, удалить SD-карту и получить эту ошибку (просто теория, не протестированная).

Я также рассматривал сеть. Наверх страницы подробной информации о трассировке стека в отчетах магазина воспроизведения вы получаете обзор ошибок со временем.

Мне показалось, что ошибка произошла больше в то время, когда было выпущено обновление. Это может поддержать теорию о том, что пользователь получает обновление приложения, загружает это обновление, которое каким-то образом повреждается. Установка идет хорошо, но первое выполнение приложения приводит к ошибке (опять же просто теории, а не проверке).

Другие ресурсы

Наконец, 2 ресурса без SO, которые могут вам помочь:

Используете ли вы свой код в разных средах, допустим, используя Dropbox или что-то в этом роде? Вы используете какую-либо библиотеку или что-то подобное? У меня было много неприятностей после обмена файлами рабочей области, и я исправил его реконфигурирование зависимостей. Надеюсь, это поможет кому-то!

Проверьте, совпадает ли имя пакета в классе с именем пакета в файле манифеста. Это сработало для меня

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

У меня было ClassNotFoundException, указывающее на мой класс приложения.

Я обнаружил, что я пропустил Java-конструктор в своем .project

Если что-то отсутствует в вашем buildSpec, закройте Eclipse, убедитесь, что все на месте и снова запустите Eclipse.

У меня такая же проблема в android os версии 4.1.2

добавить строку ниже к AndroidManifest.xml ниже android:label=»@string/app_name» в теге приложения

Это может помочь кому-то с той же проблемой.

Для меня “закрытие” приложения из Eclipse и “повторное открытие” проекта разрешило проблему.

Источник

Оцените статью