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