【问题标题】:Unable to instantiate activity ComponentInfo in AndroidStudio无法在 Android Studio 中实例化活动 ComponentInfo
【发布时间】:2021-12-25 08:58:03
【问题描述】:

我目前正在开发一个 android 项目,并且在构建后尝试运行时,应用程序崩溃了。 以下是 LogCat 的详细信息:

2021-11-13 13:37:08.105 11908-11908/com.example.finalproject E/AndroidRuntime: FATAL EXCEPTION: main 进程:com.example.finalproject,PID:11908 java.lang.RuntimeException:无法实例化活动 ComponentInfo{com.example.finalproject/com.example.finalproject.MainActivity}:java.lang.ClassNotFoundException:在路径上找不到类“com.example.finalproject.MainActivity”: DexPathList[[zip file "/data/app/~~jkeaLklNJ36aGEn6TYoiKg==/com.example.finalproject-gztqZ1eOAQvQH4Dc0_rPwA==/base.apk"],nativeLibraryDirectories=[/data/app/~~jkeaLklNJ36aGEn6TYoiKg==/com.example .finalproject-gztqZ1eOAQvQH4Dc0_rPwA==/lib/arm64, /system/lib64, /system/system_ext/lib64]] 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3492) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3748) 在 android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:85) 在 android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) 在 android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:2187) 在 android.os.Handler.dispatchMessage(Handler.java:106) 在 android.os.Looper.loop(Looper.java:236) 在 android.app.ActivityThread.main(ActivityThread.java:8057) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:620) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1011) 原因:java.lang.ClassNotFoundException:在路径上找不到类“com.example.finalproject.MainActivity”:DexPathList [[zip 文件“/data/app/~~jkeaLklNJ36aGEn6TYoiKg==/com.example.finalproject-gztqZ1eOAQvQH4Dc0_rPwA ==/base.apk"],nativeLibraryDirectories=[/data/app/~~jkeaLklNJ36aGEn6TYoiKg==/com.example.finalproject-gztqZ1eOAQvQH4Dc0_rPwA==/lib/arm64, /system/lib64, /system/system_ext/lib64]] 在 dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:207) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:379) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:312) 在 android.app.AppComponentFactory.instantiateActivity(AppComponentFactory.java:95) 在 androidx.core.app.CoreComponentFactory.instantiateActivity(CoreComponentFactory.java:45) 在 android.app.Instrumentation.newActivity(Instrumentation.java:1253) 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3480) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3748) 在 android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:85) 在 android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) 在 android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:2187) 在 android.os.Handler.dispatchMessage(Handler.java:106) 在 android.os.Looper.loop(Looper.java:236) 在 android.app.ActivityThread.main(ActivityThread.java:8057) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:620) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1011) 抑制:java.lang.NoClassDefFoundError:解析失败:Lcom/scaledrone/lib/RoomListener; 在 java.lang.VMClassLoader.findLoadedClass(本机方法) 在 java.lang.ClassLoader.findLoadedClass(ClassLoader.java:738) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:363) ... 16 更多 引起:java.lang.ClassNotFoundException:在路径上找不到类“com.scaledrone.lib.RoomListener”:DexPathList [[zip file“/data/app/~~jkeaLklNJ36aGEn6TYoiKg==/com.example.finalproject-gztqZ1eOAQvQH4Dc0_rPwA ==/base.apk"],nativeLibraryDirectories=[/data/app/~~jkeaLklNJ36aGEn6TYoiKg==/com.example.finalproject-gztqZ1eOAQvQH4Dc0_rPwA==/lib/arm64, /system/lib64, /system/system_ext/lib64]] 在 dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:207) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:379) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:312) ... 19 更多 2021-11-13 13:37:08.128 11908-11908/? I/Process:发送信号。 PID:11908 SIG:9

代码如下: MainActivity.java

    package com.example.finalproject;

import android.os.Bundle;
import android.view.View;
import android.widget.AbsSpinner;
import android.widget.EditText;
import android.widget.ListView;

import androidx.appcompat.app.AppCompatActivity;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.scaledrone.lib.Listener;
import com.scaledrone.lib.Member;
import com.scaledrone.lib.Room;
import com.scaledrone.lib.RoomListener;
import com.scaledrone.lib.Scaledrone;

import java.util.Random;

public class MainActivity extends AppCompatActivity implements RoomListener {

    private String channelID = "BmQHPGgq5n0DImdL";
    private String roomName = "observable-room";
    private EditText editText;
    private Scaledrone scaledrone;
    private MessageAdapter messageAdapter;
    private ListView messagesView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        editText = (EditText) findViewById(R.id.editText);

        messageAdapter = new MessageAdapter(this);
        messagesView = (ListView) findViewById(R.id.messages_view);
        messagesView.setAdapter(messageAdapter);

        MemberData data = new MemberData(getRandomName(), getRandomColor());

        scaledrone = new Scaledrone(channelID, data);
        scaledrone.connect(new Listener() {
            @Override
            public void onOpen() {
                System.out.println("Scaledrone connection open");
                scaledrone.subscribe(roomName, MainActivity.this);
            }

            @Override
            public void onOpenFailure(Exception ex) {
                System.err.println(ex);
            }

            @Override
            public void onFailure(Exception ex) {
                System.err.println(ex);
            }

            @Override
            public void onClosed(String reason) {
                System.err.println(reason);
            }
        });
    }

    public void sendMessage(View view) {
        String message = editText.getText().toString();
        if (message.length() > 0) {
            scaledrone.publish(roomName, message);
            editText.getText().clear();
        }
    }

    @Override
    public void onOpen(Room room) {
        System.out.println("Connected to room");
    }

    @Override
    public void onOpenFailure(Room room, Exception ex) {
        System.err.println(ex);
    }

    @Override
    public void onMessage(Room room, com.scaledrone.lib.Message receivedMessage) {
        final ObjectMapper mapper = new ObjectMapper();
        try {
            final MemberData data = mapper.treeToValue(receivedMessage.getMember().getClientData(), MemberData.class);
            boolean belongsToCurrentUser = receivedMessage.getClientID().equals(scaledrone.getClientID());
            final Message message = new Message(receivedMessage.getData().asText(), data, belongsToCurrentUser);
            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    messageAdapter.add(message);
                    messagesView.setSelection(messagesView.getCount() - 1);
                }
            });
        } catch (JsonProcessingException e) {
            e.printStackTrace();
        }
    }

    private String getRandomName() {
        String[] adjs = {"autumn", "hidden", "bitter", "misty", "silent", "empty", "dry", "dark", "summer", "icy", "delicate", "quiet", "white", "cool", "spring", "winter", "patient", "twilight", "dawn", "crimson", "wispy", "weathered", "blue", "billowing", "broken", "cold", "damp", "falling", "frosty", "green", "long", "late", "lingering", "bold", "little", "morning", "muddy", "old", "red", "rough", "still", "small", "sparkling", "throbbing", "shy", "wandering", "withered", "wild", "black", "young", "holy", "solitary", "fragrant", "aged", "snowy", "proud", "floral", "restless", "divine", "polished", "ancient", "purple", "lively", "nameless"};
        String[] nouns = {"waterfall", "river", "breeze", "moon", "rain", "wind", "sea", "morning", "snow", "lake", "sunset", "pine", "shadow", "leaf", "dawn", "glitter", "forest", "hill", "cloud", "meadow", "sun", "glade", "bird", "brook", "butterfly", "bush", "dew", "dust", "field", "fire", "flower", "firefly", "feather", "grass", "haze", "mountain", "night", "pond", "darkness", "snowflake", "silence", "sound", "sky", "shape", "surf", "thunder", "violet", "water", "wildflower", "wave", "water", "resonance", "sun", "wood", "dream", "cherry", "tree", "fog", "frost", "voice", "paper", "frog", "smoke", "star"};
        return (
                adjs[(int) Math.floor(Math.random() * adjs.length)] +
                        "_" +
                        nouns[(int) Math.floor(Math.random() * nouns.length)]
        );
    }

    private String getRandomColor() {
        Random r = new Random();
        StringBuffer sb = new StringBuffer("#");
        while(sb.length() < 7){
            sb.append(Integer.toHexString(r.nextInt()));
        }
        return sb.toString().substring(0, 7);
    }
}

activity_main.xml

    <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:clipToPadding="false"
    android:focusableInTouchMode="true"
    tools:context=".MainActivity">

    <ListView
        android:layout_width="match_parent"
        android:id="@+id/messages_view"
        android:layout_weight="2"
        android:divider="#fff"
        android:layout_height="wrap_content"
        />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="#fff"
        android:orientation="horizontal">

        <EditText
            android:id="@+id/editText"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="2"
            android:ems="10"
            android:hint="Write a message"
            android:inputType="text"
            android:paddingHorizontal="10dp"
            android:text="" />

        <ImageButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:scaleType="fitCenter"
            android:padding="20dp"
            android:layout_marginHorizontal="10dp"
            android:background="@drawable/ic_send_black_24dp"
            android:onClick="sendMessage"/>

    </LinearLayout>

</LinearLayout>

AndroidManifest.xml

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

    <uses-permission android:name="android.permission.INTERNET" />

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.Finalproject">
        <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>

我确实经历了同样的其他线程,但仍然无法破解。

谢谢

【问题讨论】:

  • 它是ClassNotFoundException。检查 MainActivity.java 是否按照清单中的说明正确放置。

标签: java android android-studio


【解决方案1】:

检查RoomListener 库是否已正确添加到 Gradle。堆栈跟踪似乎是从那里开始的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-17
    • 1970-01-01
    • 2011-11-19
    • 2014-11-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多