java.lang.RuntimeException: невозможно создать экземпляр компонента ComponentInfo - PullRequest
143 голосов
/ 14 января 2011

Я пытался запустить пример кода При запуске приложения в эмуляторе андроид 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.access$1500(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

Редактировать Эта ошибка случается с большинством начинающих, дело в том, что вы должны добавить все свои действия в файл манифеста.

Ответы [ 38 ]

129 голосов
/ 14 января 2011

Это проблема вашего намерения.

Пожалуйста, добавьте ваш Activity в ваш AndroidManifest.xml.

Если вы хотите сделать новое действие, вы должны зарегистрировать его в своемAndroidManifest.xml.

51 голосов
/ 29 апреля 2011

В моем случае я забыл добавить библиотеку карт Google

<application>
    ....

    <uses-library android:name="com.google.android.maps" />
</application>

Кроме того, убедитесь, что вы не пропустили предыдущую точку перед маршрутом активности

<activity android:name=".activities.MainActivity"/>
48 голосов
/ 18 ноября 2013

Возможно, вы пытаетесь найти представление до 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);
  }
  ...
}
43 голосов
/ 06 декабря 2011

Существует еще один способ получить java.lang.RuntimeException: невозможно создать экземпляр исключения ComponentInfo , и это действие, которое вы пытаетесь запустить, является abstract . Я однажды совершил эту глупую ошибку, и ее очень легко не заметить.

27 голосов
/ 02 июля 2013

image

Это также происходит из-за этой проблемы. Я снял флажки с банками, которые нужно было экспортировать в apk, и произошло то же самое. Пожалуйста, отметьте банки, которые должно запускать ваше приложение.

15 голосов
/ 12 октября 2012

Я тоже столкнулся с этой проблемой, но немного по-другому.Вот мой сценарий:

Сведения о приложении:

  • Использование ActionBarSherlock в качестве библиотеки
  • Использование android-support-v4-r7-googlemaps.jar в библиотеке ActionBarSherlockчтобы я мог использовать «фрагмент карты» в своем основном проекте
  • Добавил jar в путь сборки моего основного проекта
  • Включил <uses-library android:name="com.google.android.maps" /> в манифесты как библиотечного проекта, так имой основной проект (это может быть необязательным в библиотеке?)
  • Манифест в основном проекте имел правильное определение активности и все соответствующие свойства
  • У меня не было резюмеактивность или любые другие ошибки, которые я видел в Переполнении стека, относящиеся к этой проблеме.

Однако я все еще сталкивался с ошибкой, описанной в исходном посте, и не мог ее устранить.Проблема, однако, немного отличалась в одном отношении:

  • Это затронуло только новую установку приложения на мое устройство.Каждый раз, когда приложение устанавливается впервые, я получаю сообщение об ошибке, которому предшествуют несколько «предупреждений» о: Невозможно разрешить суперкласс FragmentActivity
  • Эти предупреждения восходит к библиотеке ActionBarSherlock
  • Приложение будет принудительно закрываться и вылетать.
  • Если я немедленно перестрою и заново разверну приложение, оно будет работать нормально.
  • Единственный раз, когда он рухнул, была совершенно новая установка.Если бы я удалил приложение, собрал и снова развернул его из Eclipse, оно зависло бы.Сборка / развертывание во второй раз, он будет работать нормально.

Как я это исправил:

  • В проекте библиотеки ActionBarSherlock я добавил android-support-v4-r7-googlemaps.jar к пути сборки
  • Один только этот шаг не устранил проблему

  • После добавления файла jar в путь сборки у меня былоизмените порядок на вкладке «Путь сборки Java»> «Порядок и экспорт» - я установил JAR для первого элемента в списке (он был последним после элементов / src и / gen).

  • Затем я перестроил и снова развернул приложение на моем устройстве - оно работало, как и ожидалось, при новой установке.Просто чтобы быть уверенным, я удалил его снова 2-3 раза и переустановил - все еще работал как ожидалось.

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

11 голосов
/ 13 декабря 2016

Возможно, это не относится к конкретному вопросу, но в моем случае я попытался реализовать Kotlin и пропустил apply plugin: 'kotlin-android'.Ошибка произошла из-за того, что не удалось распознать MainActivity в виде файла .kt.

Надеюсь, это кому-нибудь поможет.

11 голосов
/ 30 октября 2013

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

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);
....
}
7 голосов
/ 06 апреля 2013

Я избавился от этой проблемы, удалив папки Bin и Gen из проекта (которые автоматически возвращаются при сборке проекта), а затем очистив проект из -> Меню -> Проект -> очистить.

Спасибо.

6 голосов
/ 25 января 2012

В моем случае я не установил setContentView(R.layout.main);

Если вы создаете новый класс, не забудьте установить его в методе onCreate(Bundle savedInstanceState).

Я совершил эту глупую ошибку несколько раз.

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