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
comment


Отговори (4)


Опитайте да отидете на Project -> Properties -> Java Build Path -> Order & Export и се уверете, че Android Private Libraries са проверени за вашия проект и за всички други библиотечни проекти , който използвате. Почистете всички проекти след това и вижте какво ще се случи.

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 промени контейнера за външни библиотеки във v22 на 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
Къде е тази опция за Проект? Използвам Android Studio 2.1.1 и изглежда не мога да следвам този отговор. - person Supreme Dolphin; 17.06.2016
comment
Къде е тази опция за Проект? Използвам Android Studio 2.1.1 и изглежда не мога да следвам този отговор. - person Supreme Dolphin; 17.06.2016

Знам, че много закъснях да публикувам отговор тук. Заобиколното решение, споменато от Krauxe, не ми помогна. Моят проект има два библиотечни проекта и два буркана. Намерих решение, публикувано от „laaptu“ на страницата Библиотеките вече не се добавят към APK след надграждане до ADT 22.

person Vysakh Prem    schedule 24.07.2013

Имам пакета Eclipse ADT и в допълнение към отговора на @Krauxe, актуализирането на файла .project на Eclipse, както е показано по-долу, работи за мен:

<?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...“ може да причини същия проблем като 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