Ява.ленг.RuntimeException: не удается создать экземпляр activity ComponentInfo
Я пытался запустить пример кода
При запуске приложения в эмуляторе Android 1.5 , я получил эти ошибки....
У любого есть какой-то намек..?
ошибка от LogCat:
01-13 02:28:08.392: ERROR/AndroidRuntime(2888): FATAL EXCEPTION: main
01-13 02:28:08.392: ERROR/AndroidRuntime(2888): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.s.android.test/com.s.android.test.MainActivity}: java.lang.ClassNotFoundException: com.s.android.test.MainActivity in loader dalvik.system.PathClassLoader[/data/app/com.s.android.test-2.apk]
01-13 02:28:08.392: ERROR/AndroidRuntime(2888): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1544)
01-13 02:28:08.392: ERROR/AndroidRuntime(2888): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1638)
01-13 02:28:08.392: ERROR/AndroidRuntime(2888): at android.app.ActivityThread.access00(ActivityThread.java:117)
01-13 02:28:08.392: ERROR/AndroidRuntime(2888): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:928)
01-13 02:28:08.392: ERROR/AndroidRuntime(2888): at android.os.Handler.dispatchMessage(Handler.java:99)
01-13 02:28:08.392: ERROR/AndroidRuntime(2888): at android.os.Looper.loop(Looper.java:123)
01-13 02:28:08.392: ERROR/AndroidRuntime(2888): at android.app.ActivityThread.main(ActivityThread.java:3647)
01-13 02:28:08.392: ERROR/AndroidRuntime(2888): at java.lang.reflect.Method.invokeNative(Native Method)
01-13 02:28:08.392: ERROR/AndroidRuntime(2888): at java.lang.reflect.Method.invoke(Method.java:507)
01-13 02:28:08.392: ERROR/AndroidRuntime(2888): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
01-13 02:28:08.392: ERROR/AndroidRuntime(2888): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
01-13 02:28:08.392: ERROR/AndroidRuntime(2888): at dalvik.system.NativeStart.main(Native Method)
01-13 02:28:08.392: ERROR/AndroidRuntime(2888): Caused by: java.lang.ClassNotFoundException: com.s.android.test.MainActivity in loader dalvik.system.PathClassLoader[/data/app/com.s.android.test-2.apk]
01-13 02:28:08.392: ERROR/AndroidRuntime(2888): at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:240)
01-13 02:28:08.392: ERROR/AndroidRuntime(2888): at java.lang.ClassLoader.loadClass(ClassLoader.java:551)
01-13 02:28:08.392: ERROR/AndroidRuntime(2888): at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
01-13 02:28:08.392: ERROR/AndroidRuntime(2888): at android.app.Instrumentation.newActivity(Instrumentation.java:1021)
01-13 02:28:08.392: ERROR/AndroidRuntime(2888): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1536)
01-13 02:28:08.392: ERROR/AndroidRuntime(2888): ... 11 more
01-13 02:28:08.407: WARN/ActivityManager(112): Force finishing activity com.s.android.test/.MainActivity
Edit
Эта ошибка случается с большинством новичков, дело в том, что вы должны добавить все свои действия в файл манифеста.
30 ответов:
это проблема вашего намерения.
пожалуйста, добавьте свой
Activityв своемAndroidManifest.xml.когда вы хотите сделать новую операцию, вы должны зарегистрировать его в
AndroidManifest.xml.
в моем случае я забыл добавить библиотеку карт google
<application> .... <uses-library android:name="com.google.android.maps" /> </application>кроме того, убедитесь, что вы не пропустили предыдущую точку перед путем активности
<activity android:name=".activities.MainActivity"/>
возможно, вы пытаетесь найти смотреть перед
onCreate(), что является неверным.public class MainActivity extends Activity { ImageView mainImage = (ImageView) findViewById(R.id.imageViewMain); //incorrect @Override protected void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } ... }
есть еще один способ получить java.ленг.RuntimeException: не удается создать экземпляр activity ComponentInfo исключение и это действие, которое вы пытаетесь запустить аннотация. Я сделал эту глупую ошибку один раз, и ее очень легко не заметить.
Это также происходит из-за этой проблемы. Я снял флажки с банок, которые нужно было экспортировать в apk, и то же самое произошло. Пожалуйста, отметьте банки, которые ваше приложение должно запустить.
Я тоже столкнулся с этой проблемой, но немного по-другому. Вот мой сценарий:
приложение деталь:
- использование ActionBarSherlock в качестве библиотеки
- использование android-поддержка-v4-r7-googlemaps.jar в библиотеке ActionBarSherlock, чтобы я мог использовать "фрагмент карты" в моем основном проекте
- добавил Jar в путь сборки моего основного проекта
- включил
<uses-library android:name="com.google.android.maps" />в манифестах как проекта библиотеки, так и моего первичный проект (это может быть не нужно в библиотеке?)- манифест в основном проекте имел правильное определение активности и все соответствующие свойства
- у меня не было абстрактной активности или каких-либо других gotchas, которые я видел в Stack Overflow, относящихся к этой проблеме.
тем не менее, я все еще столкнулся с ошибкой, описанной в исходном сообщении, и не смог заставить ее уйти. Проблема, однако, была немного другой в одно замечание:
- это повлияло только на новую установку приложения на мое устройство. Каждый раз, когда приложение устанавливается в первый раз, я получаю ошибку, предшествующую нескольким "предупреждениям": не удается разрешить суперкласс FragmentActivity
- эти предупреждения прослеживаются до библиотеки ActionBarSherlock
- приложение будет принудительно закрыть и аварии.
- если я сразу же перестроил и перераспределил приложение, оно отлично работало.
- единственный раз он разбился на совершенно новой установки. Если я удалил приложение, построил и развернул его снова из Eclipse, он рухнет. Сборка / развертывание во второй раз, это будет работать нормально.
Как я это исправил:
- в проекте библиотеки ActionBarSherlock я добавил android-support-v4-r7-googlemaps.Jar в путь сборки
этот шаг сам по себе не исправил проблему
Как только jar был добавлен в путь сборки, у меня был измените порядок на вкладке путь сборки Java > порядок и экспорт-я установил JAR на первый элемент в списке (он был последним после элементов /src и /gen).
затем я перестроил и передислоцировал приложение на свое устройство-он работал, как ожидалось, на новой установке. Просто чтобы быть уверенным, я удалил его снова 2-3 раза и переустановил - все еще работал, как ожидалось.
это может быть полная ошибка новичка, но я провел довольно много времени, копаясь сообщения и мой код, чтобы понять это, поэтому, надеюсь, это может быть полезно кому-то еще. Может быть, не все ситуации исправлены, но в данном конкретном случае это стало решением моей проблемы.
эта ошибка также может быть окончательным признаком глупой ошибки (например, когда я - я имею в виду, кашель, например, когда мой друг, который показал мне свой код однажды), где они пытаются выполнить код вне метода, такого как попытка сделать это:
SQLiteDatabase db = openOrCreateDatabase("DB", MODE_PRIVATE, null); //trying to perform function where you can only set up objects, primitives, etc @Override public void onCreate(Bundle savedInstanceState) { .... }вместо этого:
SQLiteDatabase db; @Override public void onCreate(Bundle savedInstanceState) { db = openOrCreateDatabase("DB", MODE_PRIVATE, null); .... }
это может не иметь отношения к фактическому вопросу, но в моем случае я попытался реализовать Kotlin и оставил
apply plugin: 'kotlin-android'. Ошибка произошла потому, что он не мог распознать MainActivity в качестве .файл КТ.надеюсь, что это поможет кому-то.
Я избавился от этой проблемы путем удаления
BinиGenпапка из проекта (которая автоматически возвращается, когда проект будет построен), а затем очистка проекта из ->меню -> проект -> очистить.спасибо.
в моем случае я не поставил
setContentView(R.layout.main);Если вы создаете новый класс не foget, чтобы установить это в on
onCreate(Bundle savedInstanceState)метод.Я сделал эту глупую ошибку несколько раз.
просто очистите свой рабочий проект или перезапустите eclipse. Затем запустите свой проект. это сработает.
для меня, моя строка пакет в
AndroidManifest.xmlбыло неверно (скопировано из учебника). Убедитесь, что строка пакета в этом файле совпадает с тем, где находится ваша основная деятельность, напримерpackage="com.example.app"простой способ сделать это-открыть AndroidManifest.xml-файл на вкладке "манифест" и введите его в текстовое поле рядом с пакетом или используйте кнопку Обзор.
кроме того, строка пакета для моей деятельности была неправильной, например
<activity android:name="com.example.app.MainActivity" android:label="@string/app_name">Я (тупо) получил ту же ошибку несколько недель спустя, когда я переименовал свое имя пакета. Если вы сделаете это, убедитесь, что вы обновить тоже.
хорошо, я довольно опытный на iPhone, но новый для android. Я получил эту проблему, когда у меня было:
Button infoButton = (Button)findViewById(R.id.InfoButton);эта строка кода выше:
@Override public void onCreate (Bundle savedInstanceState) { }может быть, я лишен сна: P
Я недавно столкнулся с этим со свежей переустановкой Eclipse. Оказывается, мой уровень соответствия компилятора был установлен на Java 1.7, а проект требовал 1.6.
В Eclipse: Проект - > свойства - > компилятор Java - > соответствие JDK
еще одной причиной этой проблемы может быть отсутствие библиотеки.
перейдите в свойства - > Android и проверьте, что вы правильно добавляете библиотеки
У меня была та же проблема, но у меня была объявлена моя активность в файле манифеста с правильным именем.
моя проблема заключалась в том, что мне не нужно было импортировать сторонние библиотеки в папку "libs", и мне нужно было ссылаться на них в моем проекте (щелкните правой кнопкой мыши, Свойства, путь сборки Java, библиотеки, добавить Jar...).
Это может произойти, если ваш класс активности находится внутри пакета по умолчанию. Я исправил это, переместив класс activity в новый пакет. и изменение манифеста.xml
до
activity android:name=".MainActivity"после
activity android:name="new_package.MainActivity"
это происходит со мной довольно часто при использовании NDK. Я обнаружил, что мне необходимо сделать "чистый" в Eclipse после каждого раза, когда я делаю
ndk-build. Надеюсь, это поможет кому-нибудь:)
эта ошибка также возникает при использовании
ActionBarActivityно присвоено неAppCompatстиль.чтобы исправить это, просто установите родительский стиль приложения в
Theme.AppCompatодин такой.:<!-- Base application theme. --> <style name="AppTheme" parent="Theme.AppCompat.Light"> <!-- Customize your theme here. --> </style>
щелкните правой кнопкой мыши на проекте > свойства > android > и попробуйте с другой версией android ранее я делал с android 4.4, затем я перешел на android 4.3, и это сработало !
у меня была та же проблема (невозможно создать экземпляр Activity) :
первая причина :
Я обращался
Camera mCamera; Camera.Parameters params = mCamera.getParameters();до
mCamera = Camera.open();таким образом, правильный способ сделать это, сначала откройте камеру, а затем доступ к параметрам.
вторая причина: объявите свою деятельность в файле манифеста
<activity android:name=".activities.MainActivity"/>третья причина : Объявите разрешение камеры в файле манифеста.
<uses-feature android:name="android.hardware.Camera"></uses-feature> <uses-permission android:name="android.permission.CAMERA" />надеюсь, что это помогает
в моем случае, я пытался вставить Facebook SDK и я был неправ идентификатор приложения; таким образом, ошибка выскакивает. В файле манифеста вы должны иметь соответствующие метаданные:
<meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id" />
Если у вас установлена Android Studio 2.3.3 и Android Studio 3.0.0, то переключение между двумя программами для разработки вызовет эту ошибку. Это связано с тем, что существуют ситуации, когда классы, поддерживаемые в одной программе, не поддерживаются другой и наоборот. Важно поддерживать согласованность в том, какая версия Android Studio используется для разработки проекта.
Это случилось со мной, когда я пытался запустить
Activityна 2.2, который использовал импорт из Honeycomb, недоступный в более старых версиях Android и не включенный в пакет поддержки v4.
Ваша новая деятельность добавить
AndroidManifest.xmlкак".NewActivity"</activity> <activity android:name=".NewActivity" />
вы должны убедиться, что все действия в вашем приложении правильно определены в AndroidManifest.XML-файл.
кроме того, если они начинаются с пути убедитесь, что этот путь существует.
например, это не будет работать:
<activity android:name=".com.example.android.networkusage.NetworkActivity" android:label="@string/app_name" >Если имя вашего приложения
com.example.networkusage(обратите внимание на отсутствие .андроид.)или еще лучше, не включайте пути при определении действия внутри манифеста. Только поставьте свое имя (с точкой перед он.)
<activity android:name=".NetworkActivity" android:label="@string/app_name" >
вы можете иметь некоторые ошибки в областях, таких как
public class Search_costumer extends Activity { // you may have some errors like this int x =3/0; // I have error in initializing this variable too MySimpleOnGestureListener mySimpleOnGestureListener =new MySimpleOnGestureListener(); public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } }поэтому мой совет-выполнить всю инициализацию в методе onCreate не непосредственно в Ваших полях
решите вот так
public class Search_costumer extends Activity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // you may have some errors like this int x =3/0; // I have error in initializing this variable too MySimpleOnGestureListener mySimpleOnGestureListener =new MySimpleOnGestureListener(); } }
Это также может произойти, если у вас есть два проекта с одинаковым именем пакета, и вы запустили один из них перед другим, поэтому я думаю, что это смущает Eclipse. Для меня это произошло, когда я скопировал учебник Android в eclipse в том же рабочем пространстве и оставил имена пакетов одинаковыми, но добавил к нему ActionBarSherlock (ABS), например
package="com.example.android.whatever"Так что в моем AndroidManifest.xml-файл, как проект учебника, который был в моей рабочей области, так и скопированный проект учебника, оба имели в качестве пакета строка:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.android.whatever" .... </manifest>просто измените имя пакета путем рефакторинга (в eclipse щелкните правой кнопкой мыши на пакете на вкладке проводник пакетов > выберите рефрактор > выберите Переименовать...) а затем изменить его в вашем AndroidManifest.xml-файл и в любом другом месте вам нужно (например, как все ваши .java-файлы)
также, если вы извлекаете что-то из
intentдругой деятельности с помощьюgetIntentв текущей деятельности и установка этих полученных данных перед/вышеonCreateто это исключение.например. если я получаю строку, как это
final String slot1 = getIntent().getExtras().getString("Slot1");и поставить эту строку кода перед/выше
onCreateто это исключение.

Comments