ClassNotFoundException после обновления ADT

Недавно я обновил Android SDK и плагин Eclipse ADT до последней версии. Теперь, когда я пытаюсь запустить уже существующий проект Android, LogCat показывает ClassNotFoundException.

Я попытался создать новое устройство, но проблема все еще существует.

Манифест

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

<uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="17" />

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

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

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

LogCat

05-17 13:09:56.357: E/AndroidRuntime(969): FATAL EXCEPTION: main
05-17 13:09:56.357: E/AndroidRuntime(969): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.myapp/com.example.myapp.MainActivity}: java.lang.ClassNotFoundException: Didn't find class "com.example.myapp.MainActivity" on path: /data/app/com.example.myapp-1.apk
05-17 13:09:56.357: E/AndroidRuntime(969):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2106)
05-17 13:09:56.357: E/AndroidRuntime(969):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
05-17 13:09:56.357: E/AndroidRuntime(969):  at android.app.ActivityThread.access$600(ActivityThread.java:141)
05-17 13:09:56.357: E/AndroidRuntime(969):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
05-17 13:09:56.357: E/AndroidRuntime(969):  at android.os.Handler.dispatchMessage(Handler.java:99)
05-17 13:09:56.357: E/AndroidRuntime(969):  at android.os.Looper.loop(Looper.java:137)
05-17 13:09:56.357: E/AndroidRuntime(969):  at android.app.ActivityThread.main(ActivityThread.java:5041)
05-17 13:09:56.357: E/AndroidRuntime(969):  at java.lang.reflect.Method.invokeNative(Native Method)
05-17 13:09:56.357: E/AndroidRuntime(969):  at java.lang.reflect.Method.invoke(Method.java:511)
05-17 13:09:56.357: E/AndroidRuntime(969):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
05-17 13:09:56.357: E/AndroidRuntime(969):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
05-17 13:09:56.357: E/AndroidRuntime(969):  at dalvik.system.NativeStart.main(Native Method)
05-17 13:09:56.357: E/AndroidRuntime(969): Caused by: java.lang.ClassNotFoundException: Didn't find class "com.example.myapp.MainActivity" on path: /data/app/com.example.myapp-1.apk
05-17 13:09:56.357: E/AndroidRuntime(969):  at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:65)
05-17 13:09:56.357: E/AndroidRuntime(969):  at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
05-17 13:09:56.357: E/AndroidRuntime(969):  at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
05-17 13:09:56.357: E/AndroidRuntime(969):  at android.app.Instrumentation.newActivity(Instrumentation.java:1054)
05-17 13:09:56.357: E/AndroidRuntime(969):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2097)
05-17 13:09:56.357: E/AndroidRuntime(969):  ... 11 more

I noticed that the new APK file is called myapp-1.apk, while it was usually called myapp.apk. Can someone tell me how to fix?


person user2340612    schedule 17.05.2013    source источник
comment
Вы ссылаетесь на какой-либо проект библиотеки в своем проекте Android?   -  person Raghunandan    schedule 17.05.2013
comment
@Raghunandan Я. Есть ли проблема?   -  person Blackbelt    schedule 17.05.2013
comment
нет, у меня в папке libs только баночки.   -  person user2340612    schedule 17.05.2013


Ответы (4)


Попробуйте перейти в Проект -> Свойства -> Путь сборки Java -> Порядок и экспорт и убедитесь, что частные библиотеки Android отмечены для вашего проекта и для всех других проектов библиотек. вы используете. После этого очистите все проекты и посмотрите, что произойдет.

person Krauxe    schedule 17.05.2013
comment
как насчет частных библиотек Android? Это было введено с последним ADT? - person Blackbelt; 17.05.2013
comment
Спасибо, сработало! @blackbelt - это переименованная библиотека поддержки! - person user2340612; 17.05.2013
comment
Я второй вопрос @ blackbelt. И действительно ли Google нигде не сообщает нам о новых функциях и критических изменениях в выпусках ADT? ADT 22 не был полным кошмаром, как ADT 20, но почему бы не рассказать нам хотя бы о критических изменениях? На странице подключаемого модуля ADT я ожидал найти Это. - person Tom; 22.05.2013
comment
Замечательно, что лучшие инженеры мира (Google) представляют обновления, которые ломают вещи. Извините, я не могу избавиться от раздражительности. Было бы потеряно без стека. - person Fraggle; 05.06.2013
comment
Зря потратил на это часы. Вы спасаете жизнь. - person Abhi; 08.06.2013
comment
›_‹ Второй раз я наебался на эту штуку. - person Warpzit; 14.06.2013
comment
Да, проблема возникает в ADT 22. Google изменил контейнер для внешних библиотек в версии 22 ADT. Если приложения не будут обновлены, они будут испытывать ошибки, аналогичные описанным выше. Также не забудьте проверить файлы jar внешней библиотеки, которые вы добавили в папку libs, на случай, если вы работаете с внешними библиотеками, такими как рекламная сеть или любые другие файлы jar. - person user632905; 10.07.2013
comment
Не могу поверить, что я страдал от этой проблемы, мне кажется, что исключение должно быть более конкретным. - person Bobby Hargett; 19.11.2013
comment
У меня не получилось. После того, как я обновил ADT, у меня возникла эта ошибка, и, похоже, с моим проектом все в порядке. Частные библиотеки Android уже проверены в свойствах моего проекта. - person Neon Warge; 11.04.2015
comment
Где эта опция Project? Я использую Android Studio 2.1.1 и не могу понять этот ответ. - person Supreme Dolphin; 17.06.2016
comment
Где эта опция Project? Я использую Android Studio 2.1.1 и не могу понять этот ответ. - person Supreme Dolphin; 17.06.2016

Я знаю, что очень опаздываю, чтобы публиковать здесь ответ. Обходной путь, упомянутый Krauxe, мне не помог. В моем проекте есть два библиотечных проекта и два jar-файла. Я нашел решение, опубликованное laaptu на странице Библиотеки больше не добавляются в APK после обновления до ADT 22.

person Vysakh Prem    schedule 24.07.2013

У меня есть пакет Eclipse ADT и в дополнение к ответу @ Krauxe, у меня сработало обновление файла Eclipse .project, как показано ниже:

<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
    <name>RedbeaconPro</name>
    <comment></comment>
    <projects>
    </projects>
    <buildSpec>
        <buildCommand>
            <name>com.android.ide.eclipse.adt.ResourceManagerBuilder</name>
            <arguments>
            </arguments>
        </buildCommand>
        <buildCommand>
            <name>com.android.ide.eclipse.adt.PreCompilerBuilder</name>
            <arguments>
            </arguments>
        </buildCommand>
        <buildCommand>
            <name>org.eclipse.jdt.core.javabuilder</name>
            <arguments>
            </arguments>
        </buildCommand>
        <buildCommand>
            <name>com.android.ide.eclipse.adt.ApkBuilder</name>
            <arguments>
            </arguments>
        </buildCommand>
    </buildSpec>
    <natures>
        <nature>com.android.ide.eclipse.adt.AndroidNature</nature>
        <nature>org.eclipse.jdt.core.javanature</nature>
    </natures>
</projectDescription>
person jaxvy    schedule 02.01.2014

Если вы также используете плагин Maven в своем проекте, «Maven -> Maven Update ...» может вызвать ту же проблему, что и ClassNotFoundException. Как вы знаете, папка вывода классов по умолчанию должна быть / bin / classes, которая указана в файле .classpath и пути сборки Eclipse. Но как только вы выполните «Maven-> Maven Update ...», выходная папка будет установлена ​​как «target / classes». Вы можете найти его (output = "target / classes") в вашем файле .classpath.

.classpath файл:

...    
<classpath>
            <classpathentry kind="src" path="gen"/>
            <classpathentry kind="src" output="target/classes" path="src/main/java">
...

Как решить эту проблему, явно укажите папку вывода классов как «bin / classes» в файле pom.xml.

файл pom.xml:

...
<build>
            <sourceDirectory>src/main/java</sourceDirectory>
            <outputDirectory>bin/classes</outputDirectory>
...
person Richard    schedule 19.07.2014