Java android空白活动上的ClassNotFoundException

Java android空白活动上的ClassNotFoundException,java,android,android-studio,classloader,classnotfoundexception,Java,Android,Android Studio,Classloader,Classnotfoundexception,我对Android Studio(1.3开发频道)有问题。我从菜单中创建了默认的空白活动(文件->新建->新建项目,然后API 16作为最小SDK、空白活动、默认设置)。我想通过这样一个简单的设置来测试是否可以从包中加载名为MainActivity的类。为此,我简单地在OnCreate方法中添加了以下内容: ClassLoader cl = ClassLoader.getSystemClassLoader(); try { Class stringCla = C

我对Android Studio(1.3开发频道)有问题。我从菜单中创建了默认的空白活动(文件->新建->新建项目,然后API 16作为最小SDK、空白活动、默认设置)。我想通过这样一个简单的设置来测试是否可以从包中加载名为
MainActivity
的类。为此,我简单地在
OnCreate
方法中添加了以下内容:

    ClassLoader cl = ClassLoader.getSystemClassLoader();

    try {
        Class stringCla = ClassLoader.getSystemClassLoader().loadClass("java/lang/String");
    } catch (ClassNotFoundException e) {
        e.printStackTrace();
    }
    try {
        Class civeCLass = ClassLoader.getSystemClassLoader().loadClass("com/alecive/yarpdroid/MainActivity");
    } catch (ClassNotFoundException e) {
        e.printStackTrace();
    }
在运行时,第一次尝试(即使用
java/lang/String
)成功,而第二次尝试失败,即
com.alecive
yarpdroid`。这是stackTrace:

06-19 09:12:35.646  32405-32405/com.alecive.yarpdroid I/dalvikvm﹕ Could not find method android.content.res.TypedArray.getChangingConfigurations, referenced from method android.support.v7.internal.widget.TintTypedArray.getChangingConfigurations
06-19 09:12:35.646  32405-32405/com.alecive.yarpdroid W/dalvikvm﹕ VFY: unable to resolve virtual method 408: Landroid/content/res/TypedArray;.getChangingConfigurations ()I
06-19 09:12:35.646  32405-32405/com.alecive.yarpdroid I/dalvikvm﹕ Could not find method android.content.res.TypedArray.getType, referenced from method android.support.v7.internal.widget.TintTypedArray.getType
06-19 09:12:35.646  32405-32405/com.alecive.yarpdroid W/dalvikvm﹕ VFY: unable to resolve virtual method 430: Landroid/content/res/TypedArray;.getType (I)I
06-19 09:12:35.676  32405-32405/com.alecive.yarpdroid W/dalvikvm﹕ dvmFindClassByName rejecting 'com/alecive/yarpdroid/MainActivity'
06-19 09:12:35.676  32405-32405/com.alecive.yarpdroid W/System.err﹕ java.lang.ClassNotFoundException: Didn't find class "com/alecive/yarpdroid/MainActivity" on path: DexPathList[[directory "."],nativeLibraryDirectories=[/vendor/lib, /system/lib]]
06-19 09:12:35.676  32405-32405/com.alecive.yarpdroid W/System.err﹕ at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:67)
06-19 09:12:35.676  32405-32405/com.alecive.yarpdroid W/System.err﹕ at java.lang.ClassLoader.loadClass(ClassLoader.java:497)
06-19 09:12:35.676  32405-32405/com.alecive.yarpdroid W/System.err﹕ at java.lang.ClassLoader.loadClass(ClassLoader.java:457)
06-19 09:12:35.676  32405-32405/com.alecive.yarpdroid W/System.err﹕ at com.alecive.yarpdroid.MainActivity.onCreate(MainActivity.java:23)
06-19 09:12:35.676  32405-32405/com.alecive.yarpdroid W/System.err﹕ at android.app.Activity.performCreate(Activity.java:5451)
06-19 09:12:35.676  32405-32405/com.alecive.yarpdroid W/System.err﹕ at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1093)
06-19 09:12:35.676  32405-32405/com.alecive.yarpdroid W/System.err﹕ at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2377)
06-19 09:12:35.676  32405-32405/com.alecive.yarpdroid W/System.err﹕ at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2471)
06-19 09:12:35.676  32405-32405/com.alecive.yarpdroid W/System.err﹕ at android.app.ActivityThread.access$900(ActivityThread.java:175)
06-19 09:12:35.676  32405-32405/com.alecive.yarpdroid W/System.err﹕ at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1308)
06-19 09:12:35.676  32405-32405/com.alecive.yarpdroid W/System.err﹕ at android.os.Handler.dispatchMessage(Handler.java:102)
06-19 09:12:35.676  32405-32405/com.alecive.yarpdroid W/System.err﹕ at android.os.Looper.loop(Looper.java:146)
06-19 09:12:35.676  32405-32405/com.alecive.yarpdroid W/System.err﹕ at android.app.ActivityThread.main(ActivityThread.java:5602)
06-19 09:12:35.676  32405-32405/com.alecive.yarpdroid W/System.err﹕ at java.lang.reflect.Method.invokeNative(Native Method)
06-19 09:12:35.676  32405-32405/com.alecive.yarpdroid W/System.err﹕ at java.lang.reflect.Method.invoke(Method.java:515)
06-19 09:12:35.676  32405-32405/com.alecive.yarpdroid W/System.err﹕ at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283)
06-19 09:12:35.676  32405-32405/com.alecive.yarpdroid W/System.err﹕ at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099)
06-19 09:12:35.676  32405-32405/com.alecive.yarpdroid W/System.err﹕ at dalvik.system.NativeStart.main(Native Method)
为了完整起见,这里是我的
MainActivity.java
(如果您还需要什么,请告诉我,但除了这个文件之外,我没有接触任何其他文件):

这是我的
AndroidManifest.xml

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

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.alecive.yarpdroid.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>

</manifest>


try要更改类加载器
ClassLoader.getSystemClassLoader()
使用这个
this.getClass().getClassLoader()
,作为后续,这个答案对我没有帮助,因为我不是使用
Eclipse
而是使用
android studio
。如果你能指导我找到一个类似的解决方案,也许这就是我的解决方案!尝试用这个
this.getClass().getClassLoader()
更改类加载器
ClassLoader.getSystemClassLoader()
1)您的回溯显示您已经加载了com.alecive.yarpdroid.MainActivity”。显然这不是问题。2)是什么让您认为“com/alecive”一定在当前目录中(或当前类路径)?请按照讨论进行。3)尝试以下操作:
getClass().getProtectionDomain().getCodeSource().getLocation();
为什么
com/alecive/yarpdroid/MainActivity
而不是
com.alecive.yarpdroid.MainActivity
?@immibis您的建议也行不通。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.alecive.yarpdroid" >

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.alecive.yarpdroid.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>

</manifest>