Java.Lang.RuntimeException 해결: 활동 ComponentInfo를 인스턴스화할 수 없음

Mehvish Ashiq 2023년10월12일
Java.Lang.RuntimeException 해결: 활동 ComponentInfo를 인스턴스화할 수 없음

오늘은 Unable to instantiate activity ComponentInfo라는 또 다른 런타임 예외에 대해 알아보겠습니다.

java.lang.RuntimeException: Unable to instantiate activity ComponentInfo가 발생하는 여러 가능한 이유를 살펴보겠습니다. 마지막으로 이를 근절할 수 있는 솔루션을 갖게 될 것입니다.

java.lang.RuntimeException: 활동 ComponentInfo를 인스턴스화할 수 없음 오류 해결

오류 데모에 대한 예제 코드(MainActivity.java 파일):

public class MainActivity extends Activity {
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
  }
  // write your remaining code here
}

예제 코드(AndroidManifest.xml 파일):

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="com.example.app">

    <application
        android:allowBackup="true"
        android:dataExtractionRules="@xml/data_extraction_rules"
        android:fullBackupContent="@xml/backup_rules"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.App"
        tools:targetApi="31">

        <activity
            android:name="MainActivity"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

    </application>

</manifest>

Android 에뮬레이터에서 애플리케이션을 시작하는 동안 이것을 실행하려고 하면 java.lang.RuntimeException: 활동 ComponentInfo를 인스턴스화할 수 없습니다라는 오류가 발생합니다.

이 문제를 해결하기 위해 고려해야 할 몇 가지 가능한 원인이 있습니다. 그들 모두는 아래에 나열되어 있습니다.

  • ActivityAndroidManifest.xml 파일에 추가되었는지 확인합니다. 왜 필요한가요?

    Activity를 만들 때마다 AndroidManifest.xml 파일에 등록해야 하기 때문입니다. 또한 모든 액세스 수정자를 확인하십시오.

  • onCreate() 이전에 보려고 시도할 때도 이 오류가 발생합니다. 이 오류는 올바르지 않으며 활동 구성 요소 정보를 인스턴스화할 수 없다는 오류가 발생합니다.

  • java.lang.RuntimeException: Unable to instantiate activity ComponentInfo가 발생하는 또 다른 이유는 AndroidManifest.xmlabstract로 선언된 Activity를 추가했기 때문입니다. 즉, 액세스하려는 활동추상으로 선언되었다고 말할 수 있습니다.

  • 활동 경로 앞에 선행 점이 누락되지 않았는지 확인합니다(이로 인해 위에 제공된 예제 코드에서 오류가 발생함).

  • MainActivity.java 파일을 public으로 선언하지 않은 경우에도 이 오류에 직면해야 합니다. 또한 파일이 올바른 패키지에 있는지 확인하십시오.

이제 가능한 모든 이유를 알고 있습니다. 어떻게 고칠 수 있습니까?

다음 솔루션을 참조하십시오.

솔루션의 예제 코드(MainActivity.java 파일):

public class MainActivity extends Activity {
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
  }
  // write your remaining code here
}

예제 코드(AndroidManifest.xml 파일):

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="com.example.app">

    <application
        android:allowBackup="true"
        android:dataExtractionRules="@xml/data_extraction_rules"
        android:fullBackupContent="@xml/backup_rules"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.App"
        tools:targetApi="31">

        <activity
            android:name=".MainActivity"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

    </application>

</manifest>

활동 경로 앞에 선행 점을 추가했습니다. 또한 MainActivity.java 파일이 public으로 선언되었으며 abstract로 선언된 Activity에 액세스하려고 시도하지 않는지 확인합니다.

원인으로 제시된 모든 점은 우리가 고려한다면 실제 해결책이기 때문에 주의하십시오.

Mehvish Ashiq avatar Mehvish Ashiq avatar

Mehvish Ashiq is a former Java Programmer and a Data Science enthusiast who leverages her expertise to help others to learn and grow by creating interesting, useful, and reader-friendly content in Computer Programming, Data Science, and Technology.

LinkedIn GitHub Facebook

관련 문장 - Java Error