Ява.ленг.К RuntimeException: не удается создать экземпляр деятельность 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

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

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: невозможно создать экземпляр действия ComponentInfo исключения и это действие, которое вы пытаетесь запустить это аннотация. Я сделал эту глупую ошибку один раз, и ее очень легко упустить.


Image

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


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

приложение деталь:

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

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

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

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

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

  • Как только jar был добавлен в путь сборки, у меня был измените порядок на вкладке Java Build Path > Order and Export - я установил 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);
....
}

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

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


Я избавился от этой проблемы путем удаления 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, а project required 1.6.

В Eclipse: Проект - > свойства - > компилятор Java - > соответствие JDK


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


другой причиной этой проблемы может быть отсутствие библиотеки.

перейдите в свойства - > Android и убедитесь, что вы добавляете библиотеки правильно


У меня была та же проблема, но у меня была объявлена моя активность в файле манифеста с правильным именем.

моя проблема заключалась в том, что мне не нужно было импортировать сторонние библиотеки в папку "libs", и мне нужно было ссылаться на них в моем proyect (щелкните правой кнопкой мыши, Свойства, путь сборки Java, библиотеки, добавить Jar...).


Это может произойти, если класс activity находится внутри пакета по умолчанию. Я исправил это, переместив класс activity в новый пакет. и изменение манифеста.в XML

до

activity android:name=".MainActivity" 

после

activity android:name="new_package.MainActivity"

это происходит со мной довольно часто при использовании NDK. Я обнаружил, что мне нужно делать "чистый" в Eclipse после каждого раза, когда я делаю ndk-build. Надеюсь, это поможет кому-нибудь:)


эта ошибка также возникает при использовании ActionBarActivity но назначен non AppCompat стиль.

чтобы исправить это, просто установите родительский стиль приложения в Theme.AppCompat один такой.:

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light">
    <!-- Customize your theme here. -->
</style>

щелкните правой кнопкой мыши на project > properties > 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 то это исключение.