类未find错误,但类肯定存在

好的,所以我在Android Studio上有一个项目,但是当我在模拟器上运行应用程序时,它崩溃了。 在堆栈跟踪中,有一个类没有find主要活动类的exception,根据我的理解,它指向只有一个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构build:

 // 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() } 

Solutions Collecting From Web of "类未find错误,但类肯定存在"

首先“清理”和“与Gradle文件同步项目”。 然后运行你的代码。

只要删除你的项目的构build文件夹,然后清理并运行你的应用程序..这对我来说是伎俩。

您定义MainActivity的包与清单中的包不同。 您正在将清单中的com.example.user.myfirstapp定义为您的包,并使用清单中的相对path定义您的MainActivity。 所以清单认为你的MainActivity位于com.example.user.myfirstapp.MainActivty。 但是你的MainActivity实际上是在包com.example.user.assignment1中。 要么你在MainActivity的清单中使用绝对path,要么更改包。

在Android Studio中,

有些时候,由于gradle版本,这种types的错误是生成的。

我面临同样的和切换

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

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

在Project的build.gradle文件中。 它为我工作。 其实版本gradle:2.0.0-beta2是不稳定的,可能有一些错误。

注意:始终只使用稳定版本

我有以下问题:

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

通常这是AndroidManifest.xml问题,没有正确的包名称或MAIN意图的活动没有正确定义。 这很容易解决。

最近我有这个问题,发现根本原因是在参考项目。 这个引用项目( BaseGameUtils )有不同的版本的google-play-service 。 在logcat显示以上错误之前,消息来自console抱怨jar mismatch方式。 不知何故,这个控制台消息不停止编译结束了我有运行时错误。 这使我像10 M / Hs。

这可能是因为没有.class文件。 检查是否已经定义了编译文件的输出目录,并尝试再次编译故障类。

closuresandroid studio,删除“.gradle”,“.idea”,“gradle”这3个文件夹。 然后打开android studio。 现在工作室将创build新的configuration文件,所以应用程序将正常运行

我面对这种错误,而我的解决scheme是添加在gradle文件依赖(应用程序)“编译”com.android.support:design:25.3.1'“这是因为我启动了一个项目没有这种依赖然后我添加了“卡”支持,即需要这个依赖关系。

重命名包和类后可能会发生这种情况。 在你的一个xml布局中,你可能会引用一个标签内的自定义类 。 不幸的是,这个path不会被Android Studio重命名。 检查path是否正确。

这也可能是一个Gradle设置崩溃。 尝试从您的项目文件夹中删除.gradle和生成文件夹,并从您的模块文件夹生成文件夹,重build并重新启动应用程序。 删除的文件夹将以正确的设置重新生成。

  1. 卸载应用程序
  2. 重启你的手机
  3. 重新安装应用程序