Подтвердить что ты не робот

Класс не найден, но класс определенно существует

ОК, поэтому у меня есть проект в Android Studio, но когда я запускаю приложение на эмуляторе, он сработает. В трассировке стека есть класс, не найденный исключение для основного класса активности, и, по моему мнению, он указывает на строку с закрывающей скобкой для оператора if.

Вот трассировка стека:

02-21 14:49:44.498    2362-2362/com.example.user.assignment1 E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.example.user.assignment1, PID: 2362
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.user.assignment1/com.example.user.assignment1.MainActivity}: java.lang.ClassNotFoundException: Didn't find class "com.example.user.assignment1.MainActivity" on path: DexPathList[[zip file "/data/app/com.example.user.assignment1-2/base.apk"],nativeLibraryDirectories=[/vendor/lib, /system/lib]]
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2209)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)
        at android.app.ActivityThread.access$800(ActivityThread.java:144)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:135)
        at android.app.ActivityThread.main(ActivityThread.java:5221)
        at java.lang.reflect.Method.invoke(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:372)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
 Caused by: java.lang.ClassNotFoundException: Didn't find class "com.example.user.assignment1.MainActivity" on path: DexPathList[[zip file "/data/app/com.example.user.assignment1-2/base.apk"],nativeLibraryDirectories=[/vendor/lib, /system/lib]]
        at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:469)
        at android.app.Instrumentation.newActivity(Instrumentation.java:1065)
        at   android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2199)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)
at android.app.ActivityThread.access$800(ActivityThread.java:144)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5221)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at     com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
Suppressed: java.lang.NoClassDefFoundError: com.example.user.assignment1.MainActivity
        at dalvik.system.DexFile.defineClassNative(Native Method)
        at dalvik.system.DexFile.defineClass(DexFile.java:226)
        at dalvik.system.DexFile.loadClassBinaryName(DexFile.java:219)
        at dalvik.system.DexPathList.findClass(DexPathList.java:321)
        at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:54)
        ... 14 more
Suppressed: java.lang.ClassNotFoundException: com.example.user.assignment1.MainActivity
        at java.lang.Class.classForName(Native Method)
        at java.lang.BootClassLoader.findClass(ClassLoader.java:781)
        at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:504)
        ... 13 more
 Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack available

Поскольку я не могу понять, где ошибка, я также отправлю код здесь:

package com.example.user.assignment1;

import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import java.util.Random;


public class MainActivity extends ActionBarActivity {

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


@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.menu_main, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();

    //noinspection SimplifiableIfStatement
    if (id == R.id.action_settings) {
        return true;
    }

    return super.onOptionsItemSelected(item);
}

public void left_click(View view) {
    Button l=(Button) findViewById(R.id.left);
    Button r=(Button) findViewById(R.id.right);
    int l1 = Integer.parseInt(l.getText().toString());
    int r1 = Integer.parseInt(r.getText().toString());
    TextView t=(TextView) findViewById(R.id.label);




    if(l1>r1)
    {
        t.setText("Correct! "+l1+" is bigger!");
    }
    else
    {
        t.setText("Sorry! " + r1 + " is bigger!");
    }

    Random ran = new Random();
    int random = ran.nextInt(100);

    l.setText(random);
    r.setText(random);

}

public void right_click(View view) {
    Button l=(Button) findViewById(R.id.left);
    Button r=(Button) findViewById(R.id.right);
    int l1 = Integer.parseInt(l.getText().toString());
    int r1 = Integer.parseInt(r.getText().toString());
    TextView t=(TextView) findViewById(R.id.label);




    if(l1<r1)
    {
        t.setText("Correct! "+r1+" is bigger!");
    }
    else
    {
        t.setText("Sorry! " + l1 + " is bigger!");
    }
    Random ran = new Random();
    int random = ran.nextInt(100);

    l.setText(random);
    r.setText(random);
}
}

В файле ActivityThread.java имеется много ошибок, которые, по-видимому, растут из-за ошибок в импорте. Импорт с ошибками для этого файла:

import android.content.IIntentReceiver;//IIntentReceiver is in red
import android.content.pm.IPackageManager;//IPackageManager is in red
import android.net.IConnectivityManager;//IConnectivityManager is in red
import com.android.internal.app.IVoiceInteractor;//IVoiceInteractor
import com.android.org.conscrypt.OpenSSLSocketImpl;//conscrypt is in red
import com.android.org.conscrypt.TrustedCertificateStore;//conscrypt is in red
import com.google.android.collect.Lists;//google is in red
import libcore.io.DropBox;//libcore is in red
import libcore.io.EventLogger;//libcore is in red
import libcore.io.IoUtils;//libcore is in red
import libcore.net.event.NetworkEventDispatcher;//libcore is in red
import dalvik.system.CloseGuard;//CloseGuard is in red
import dalvik.system.VMDebug;//VMDebug is in red
import dalvik.system.VMRuntime;//VMRuntime is in red

И вот файл манифеста в соответствии с запросом:

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

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name=".MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>

И файл build.gradle:

apply plugin: 'com.android.application'

android {
compileSdkVersion 21
buildToolsVersion "21.1.2"

defaultConfig {
    applicationId "com.example.user.assignment1"
    minSdkVersion 8
    targetSdkVersion 21
    versionCode 1
    versionName "1.0"
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}
}

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:21.0.3'
}

И построение gradle для проекта:

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
repositories {
    jcente
    dependencies {
        classpath 'com.android.tools.build:gradle:1.0.0'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        jcenter()
    }
}
r()
}
4b9b3361

Ответ 1

Сначала "Очистить" и "Синхронизировать проект с Gradle Files". Затем запустите свой код.

Ответ 2

Просто удалите папку создания проекта, затем очистите и запустите приложение. Это сделало трюк для меня.

Ответ 3

Ваш пакет, в котором вы определили свой MainActivity, отличается от пакета вашего манифеста. Вы определяете com.example.user.myfirstapp как свой пакет в манифесте и определяете свой MainActivity с относительным путем в манифесте. Таким образом, манифест думает, что ваша MainActivity находится по адресу com.example.user.myfirstapp.MainActivty. Но ваша MainActivity действительно находится в пакете com.example.user.assignment1. Либо вы используете абсолютный путь в манифесте для MainActivity, либо вы изменяете пакет.

Ответ 4

В Android Studio,

Несколько раз из-за версии gradle этот тип ошибок генерируется.

Я столкнулся с тем же и переключился с

classpath 'com.android.tools.build: gradle:2.0.0-beta2'

к

classpath 'com.android.tools.build: gradle:1.5.0'

в файле проекта build.gradle. И это сработало для меня. На самом деле версия gradle: 2.0.0-beta2 не была стабильной, и могут быть некоторые ошибки.

Примечание: Всегда используйте только стабильные версии

Ответ 5

У меня была следующая проблема:

java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack available

Обычно проблема с AndroidManifest.xml, которая не имеет надлежащего имени пакета или активности с MAIN, не была определена должным образом. Это легко исправить.

У меня была эта проблема в последнее время, и я обнаружил, что основная причина была в ссылке на проект. Этот проект ссылки (BaseGameUtils) каким-то образом имел другую версию google-play-service. Сообщение приходит от console жалобы jar mismatch до того, как logcat показывает выше ошибки. Как-то это консольное сообщение не прекращает компиляцию в конечном итоге. У меня была ошибка времени выполнения. Это стоило мне, как 10 M/Hs.

Ответ 6

Это может быть из-за отсутствия файла .class. Убедитесь, что вы определили выходной каталог скомпилированных файлов и попытайтесь снова скомпилировать класс проблем.

Ответ 7

закрыть андроид-студию, удалить ".gradle", ".idea", "gradle" эти 3 папки. а затем открыть андроид-студию. Теперь студия создаст новые файлы конфигурации, поэтому приложение будет работать правильно.

Ответ 8

Я сталкиваюсь с такой ошибкой, и решение для меня состояло в том, чтобы добавить в gradle зависимые файлы (приложение) "скомпилировать" com.android.support:design:25.3.1 ' "Это произошло из-за того, что я начал проект без этих зависимостей, а затем добавил поддержку" карты", которая нуждается в этих зависимостях.

Ответ 9

Это может произойти после переименования пакетов и классов. В одном из ваших макетов xml вы можете ссылаться на пользовательский класс внутри тега. К сожалению, этот путь не переименован в Android Studio. Проверьте правильность пути.

Это также может быть сбой настроек Gradle. Попробуйте удалить .gradle и build папки из папки проекта и build из папки вашего модуля, перестроить и перезапустить приложение. Удаленная папка будет восстановлена ​​с правильными настройками.

Ответ 10

  • Удалите приложение
  • перезагрузите телефон.
  • переустановите приложение.