programing

자바.java.java런타임예외:작업 ComponentInfo를 인스턴스화할 수 없습니다.

itmemos 2023. 9. 4. 19:34
반응형

자바.java.java런타임예외:작업 ComponentInfo를 인스턴스화할 수 없습니다.

샘플 코드를 실행하려고 했는데 안드로이드 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

편집 이 오류는 대부분의 초보자에게 발생합니다. 문제는 매니페스트 파일에 모든 활동을 추가해야 한다는 것입니다.

그것은 당신의 의도의 문제입니다.

의 십가시를 .Activity의 신의에AndroidManifest.xml.

이 새로운 을 하고 때, 을 여러분의 당이새활만싶때을, 당그등야합니다록해에 .AndroidManifest.xml.

이전에 보기를 찾으려는 중일 수 있습니다.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.lang을 얻는 다른 방법이 있습니다.런타임예외: 활동 ComponentInfo 예외를 인스턴스화할 수 없습니다. 시작하려는 활동이 추상적입니다.나는 이런 어리석은 실수를 한 적이 있는데 그것은 간과하기 쉽습니다.

나의 경우 구글 맵 라이브러리를 추가하는 것을 잊었습니다.

<application>
    ....

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

또한 활동 경로 앞에 있는 이전 점을 놓치지 않았는지 확인합니다.

<activity android:name=".activities.MainActivity"/>

Image

이 문제 때문에 발생하기도 합니다.저는 apk로 수출해야 하는 항아리들을 확인해 보았는데, 똑같은 일이 일어났습니다.앱을 실행해야 하는 병을 선택하십시오.

이것은 실제 질문과 관련이 없을 수도 있지만, 저의 경우, 코틀린을 구현하려고 시도했고 생략했습니다.apply plugin: 'kotlin-android'의 기본 활동을 .kt 파일로 인식할 수 없어 오류가 발생했습니다.

누군가에게 도움이 되길 바랍니다.

저도 이 문제에 부딪혔지만, 약간 다른 방식으로 부딪혔습니다.제 시나리오는 다음과 같습니다.

앱 세부 정보:

  • 작업 표시줄Sherlock을 라이브러리로 사용
  • 기본 프로젝트에서 "지도 조각"을 사용할 수 있도록 ActionBarSherlock 라이브러리에서 Android-support-v4-r7-googlemaps.jar 사용
  • 기본 프로젝트의 빌드 경로에 병을 추가했습니다.
  • 포함<uses-library android:name="com.google.android.maps" />도서관 프로젝트와 나의 주요 프로젝트 모두의 매니페스트에서 (도서관에서 필요하지 않을 수도 있음).
  • 기본 프로젝트의 매니페스트에 적절한 활동 정의와 모든 적절한 속성이 있습니다.
  • 저는 이 문제와 관련하여 Stack Overflow에서 본 추상적인 활동이나 다른 어떤 gotch도 없었습니다.

하지만, 저는 원래 게시물에 설명된 오류를 여전히 마주쳤고 그것을 제거할 수 없었습니다.하지만 문제는 한 가지 측면에서 약간 달랐습니다.

  • 이 문제는 응용 프로그램을 장치에 새로 설치하는 데만 영향을 미칩니다.앱이 처음 설치될 때마다 다음과 같은 몇 가지 "경고"가 선행되는 오류가 발생합니다. "Fragment Activity의 슈퍼클래스를 해결할 수 없습니다.
  • 이러한 경고는 ActionBarSherlock 라이브러리로 추적되었습니다.
  • 앱이 강제로 닫히고 충돌합니다.
  • 제가 즉시 앱을 다시 빌드하고 다시 배포하면 잘 작동했습니다.
  • 그것이 추락한 유일한 때는 완전히 새로 설치했을 때였습니다.앱을 제거하고 Eclipse에서 빌드한 후 다시 배포하면 앱이 중단됩니다.한 번 더 빌드/배포하면 정상적으로 작동합니다.

수정 방법:

  • ActionBarSherlock 라이브러리 프로젝트에서 빌드 경로에 Android-support-v4-r7-google maps.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);
....
}

, 나를위해문, ▁in▁string로 된 제 문자열입니다.AndroidManifest.xml틀렸습니다(자습서에서 삭제).이 파일의 패키지 문자열이 기본 활동이 있는 위치와 동일한지 확인합니다.

 package="com.example.app"

이렇게 하는 쉬운 방법은 "Manifest" 탭에서 AndroidManifest.xml 파일을 열고 패키지 옆의 텍스트 상자에 입력하거나 찾아보기 버튼을 사용하는 것입니다.

또한 제 활동을 위한 패키지 문자열이 잘못되어 있습니다.

<activity android:name="com.example.app.MainActivity" android:label="@string/app_name">

몇 주 후에 패키지 이름을 변경했을 때 동일한 오류가 발생했습니다.이 작업을 수행할 경우 다음을 업데이트해야 합니다.AndroidManifest.xml파일도 있습니다.

는 이 를 삭제함으로써 해결했습니다.Bin그리고.Gen프로젝트에서 폴더를 찾은 다음 ->메뉴 ->프로젝트 ->청소에서 프로젝트를 청소합니다.

감사해요.

작업 중인 프로젝트를 정리하거나 이클립스를 다시 시작합니다.그런 다음 프로젝트를 실행합니다.그건 작동할 것이다.

제 경우에는 설정하지 않았습니다.setContentView(R.layout.main);

당신이 , 을 새클스를만경이마설십오시지정하클에 .onCreate(Bundle savedInstanceState)방법.

나는 이런 어리석은 실수를 여러 번 했습니다.

저에게 그것은 위의 어떤 것과도 달랐습니다.

활동이 추상적으로 선언되었으므로 오류를 제공합니다.일단 제거하면 효과가 있습니다.

예상보다 일찍

     public abstract class SampleActivity extends AppcompatActivity{
     }

제거 후

     public class SampleActivity extends AppcompatActivity{
     }

네, 저는 아이폰은 꽤 경험이 있지만 안드로이드는 처음입니다.이 문제는 다음과 같은 경우에 발생했습니다.

Button infoButton = (Button)findViewById(R.id.InfoButton);

위의 코드 행:

@Override
public void onCreate (Bundle savedInstanceState) {
}

아마도 나는 수면부족일 것입니다 :P

저의 경우, 저는 이전에도 구성 요소(UI)를 초기화하려고 했습니다.onCreate활동에 대해 호출됩니다.

구성 가 UI에서 합니다.onCreate 뒤의 setContentView

NB: 안드로이드 프로그래밍을 배우면서 처음으로 실수한 것입니다.

기본 활동이 "추상적"이지 않은지 확인합니다.

abstract class MainActivity : AppCompatActivity()

추상적인 것만 제거합니다.

class MainActivity : AppCompatActivity() {

최근 이클립스를 새로 다시 설치하면서 이 문제를 발견했습니다.컴파일러 컴플라이언스 수준이 Java 1.7로 설정되었고 프로젝트에 1.6이 필요했습니다.

이클립스에서:Project -> Properties -> Java Compiler -> JDK Compliance

누가 오류를 얻을 수 있는 많은 방법이 있습니까!

다른 어떤 것도 적용되지 않았거나 원인이 된 것이 아니라면 저는 다른 것을 추가할 것입니다.

활동 수업 선언문에 '공중'을 잊어버렸어요!패키지 비공개였습니다.

저는 블루투스 코드를 너무 많이 써서 습관적으로 패키지 전용 활동 클래스를 만들었습니다.

이 오류 메시지의 모호성에 대해 설명합니다.

이 문제가 발생하여 활동의 "시작 모드" 속성을 설정하여 해결했습니다.

이 문제의 또 다른 이유는 누락된 라이브러리일 수 있습니다.

Properties -> Android로 이동하여 라이브러리를 올바르게 추가했는지 확인합니다.

저도 같은 문제가 있었지만, 매니페스트 파일에 정확한 이름으로 활동이 선언되었습니다.

문제는 "libs" 폴더에서 타사 라이브러리를 가져올 필요가 없고 프로젝트(오른쪽 클릭, 속성, Java 빌드 경로, 라이브러리, 자 추가...)에서 참조해야 한다는 것이었습니다.

활동 클래스가 기본 패키지 안에 있는 경우 이 문제가 발생할 수 있습니다.저는 액티비티 클래스를 새로운 패키지로 이동하여 수정했습니다.manifest.xml을 변경하는 중

전에

activity android:name=".MainActivity" 

끝나고

activity android:name="new_package.MainActivity"

의 제안대로djjeck대답에서 내가 놓쳤던 코멘트에서.public우리 반에 대한 수식어.

그럴 것 같네요.

public class MyActivity extends AppCompatActivity {

저 같은 사람들에게 도움이 될 수도 있습니다.

저의 경우 기본 활동 클래스를 공용으로 만드는 것을 잊어버립니다.

기타 솔루션:

  1. 매니페스트 파일에 활동 추가

  2. 모든 액세스 한정자 확인

NDK를 사용할 때 이런 일이 꽤 자주 발생합니다.매번 이클립스를 할 때마다 "Clean"을 해야 한다는 것을 알게 되었습니다.ndk-build누구에게나 도움이 되길 바랍니다 :)

이 오류는 다음을 사용할 때도 발생합니다.ActionBarActivity하지만 non을 배정했습니다.AppCompat스타일.

이 문제를 해결하려면 앱 스타일을 부모로 설정합니다.Theme.AppCompat이와 같은 것.

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

프로젝트 > 속성 > 안드로이드 > 를 마우스 오른쪽 버튼으로 클릭하고 이전에 안드로이드 4.4로 하고 있던 다른 버전의 안드로이드로 시도해보고 안드로이드 4.3으로 변경했더니 작동했습니다!

대부분의 경우 IfActivity변경된 이름은 프로젝트 전체에 반영됩니다.AndroidManifest.xml파일.

이름을 추가하기만 하면 됩니다.manifest수동으로

<activity
android:name="Activity_Class_Name"
android:label="@string/app_name">
</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" />

이것이 도움이 되길 바랍니다.

의 경우, 페이스북 SDK를 내장하려다가 애플리케이션 ID가 잘못되어 오류가 발생했습니다.매니페스트 파일에는 적절한 메타데이터가 있어야 합니다.

<meta-data
android:name="com.facebook.sdk.ApplicationId"
android:value="@string/facebook_app_id" />

언급URL : https://stackoverflow.com/questions/4688277/java-lang-runtimeexception-unable-to-instantiate-activity-componentinfo

반응형