Ява.ленг.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
Эта ошибка случается с большинством новичков, дело в том, что вы должны добавить все свои действия в файл манифеста.

1849   30  

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

Image

Это также происходит из-за этой проблемы. Я снял флажки с банок, которые нужно было экспортировать в 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

    Ничего не найдено.