Android ClassNotFoundException: ไม่พบคลาสบนเส้นทาง


99
10-22 15:29:40.897: E/AndroidRuntime(2561): FATAL EXCEPTION: main
10-22 15:29:40.897: E/AndroidRuntime(2561): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.gvg.simid/com.gvg.simid.Login}: java.lang.ClassNotFoundException: Didn't find class "com.gvg.simid.Login" on path: DexPathList[[zip file "/data/app/com.gvg.simid-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.gvg.simid-1, /vendor/lib, /system/lib]]
10-22 15:29:40.897: E/AndroidRuntime(2561):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2137)
10-22 15:29:40.897: E/AndroidRuntime(2561):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
10-22 15:29:40.897: E/AndroidRuntime(2561):     at android.app.ActivityThread.access$600(ActivityThread.java:141)
10-22 15:29:40.897: E/AndroidRuntime(2561):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
10-22 15:29:40.897: E/AndroidRuntime(2561):     at android.os.Handler.dispatchMessage(Handler.java:99)
10-22 15:29:40.897: E/AndroidRuntime(2561):     at android.os.Looper.loop(Looper.java:137)
10-22 15:29:40.897: E/AndroidRuntime(2561):     at android.app.ActivityThread.main(ActivityThread.java:5103)
10-22 15:29:40.897: E/AndroidRuntime(2561):     at java.lang.reflect.Method.invokeNative(Native Method)
10-22 15:29:40.897: E/AndroidRuntime(2561):     at java.lang.reflect.Method.invoke(Method.java:525)
10-22 15:29:40.897: E/AndroidRuntime(2561):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
10-22 15:29:40.897: E/AndroidRuntime(2561):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
10-22 15:29:40.897: E/AndroidRuntime(2561):     at dalvik.system.NativeStart.main(Native Method)
10-22 15:29:40.897: E/AndroidRuntime(2561): Caused by: java.lang.ClassNotFoundException: Didn't find class "com.gvg.simid.Login" on path: DexPathList[[zip file "/data/app/com.gvg.simid-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.gvg.simid-1, /vendor/lib, /system/lib]]
10-22 15:29:40.897: E/AndroidRuntime(2561):     at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:53)
10-22 15:29:40.897: E/AndroidRuntime(2561):     at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
10-22 15:29:40.897: E/AndroidRuntime(2561):     at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
10-22 15:29:40.897: E/AndroidRuntime(2561):     at android.app.Instrumentation.newActivity(Instrumentation.java:1061)
10-22 15:29:40.897: E/AndroidRuntime(2561):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2128)
10-22 15:29:40.897: E/AndroidRuntime(2561):     ... 11 more

ฉันไม่แน่ใจจริงๆว่าอะไรเป็นสาเหตุเนื่องจากมีการระบุไว้อย่างถูกต้องในรายการ:

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

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

    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.BLUETOOTH" />
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
    <uses-permission android:name="android.permission.CAMERA"/>
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.READ_LOGS" />
    <uses-permission android:name="android.permission.READ_OWNER_DATA" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.RECORD_AUDIO"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.WRITE_OWNER_DATA" />
    <uses-permission android:name="android.permission.WRITE_SETTINGS" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />

    <uses-feature android:name="android.hardware.usb.host" />

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

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

</manifest>

ฉันยังได้เพิ่ม "Android Private Libraries" เพื่อสร้างเส้นทางและย้ายไปที่ด้านบนของ "Order and Export" แต่ก็ยังคงให้ข้อผิดพลาดเดิม

แก้ไข: ฉันสร้างโครงการใหม่ทั้งหมดและไม่สามารถสร้างข้อผิดพลาดซ้ำได้ ไม่แน่ใจว่าสาเหตุเกิดจากอะไร


2
คุณใช้โปรการ์ดหรือเปล่า
Juangcg

ไม่ได้เปิดใช้งาน Proguard
Phito

ตรวจสอบโพสต์นี้: stackoverflow.com/questions/10866431/…
Juangcg

ลองใช้ ".Login" ใน android: name แทน Android จะต่อท้ายส่วนที่เหลือของคำนำหน้าด้วยตัวเองหากตรวจไม่พบ อาจเป็นปัญหาในการแยกวิเคราะห์แปลก ๆ กับ Eclipse
Darryl Bayliss

@Juangcg ฉันอ่านโพสต์ก่อนที่จะทำโพสต์นี้ แต่น่าเสียดายที่ทุกอย่างที่ฉันพยายามจากที่นั่นไม่ได้ผล
ฟีโต

คำตอบ:


77

ฉันมีปัญหาเดียวกันสำหรับโครงการของฉัน เกิดขึ้นเนื่องจากความขัดแย้งในเวอร์ชันไลบรารีการสนับสนุน Android ระหว่างโครงการของฉันกับโครงการห้องสมุดที่ฉันเพิ่มในโครงการของฉัน ใส่ไลบรารีการสนับสนุน Android เวอร์ชันเดียวกันในโปรเจ็กต์และโปรเจ็กต์ไลบรารีที่คุณรวมไว้และสร้างความสะอาด ... ทุกอย่างจะทำงาน ...


3
ขอบคุณค่า !!! ฉันแน่ใจว่าฉันได้ทำไปแล้ว แต่ฉันตรวจสอบแล้วเวอร์ชันต่างกัน! ขอบคุณมาก!
Rodrigo Venancio

2
ฉันแสดงความคิดเห็นนี้เพื่อจดจำในครั้งต่อไปที่จะ "อัปเดต" sdk ดูคำตอบนี้
Enrique San Martín

1
มีความคิดว่าทำไมปัญหาถึงเกิดขึ้นถ้าฉันไม่ใช้ไลบรารีสนับสนุน
Budda

33

วิธีต่อไปนี้ใช้ได้ผลสำหรับฉัน

  • คลิกขวาที่ของคุณprojectแล้วเลือกproperties
  • แผง "คุณสมบัติสำหรับ" จะเปิดขึ้น จากเมนูทางด้านซ้ายไปที่Java Build Path->Order and Export
  • จากรายการด้านล่างให้ยกเลิกการเลือกช่องถัดจาก "Android Dependencies"
  • สุดท้ายclean your projectและเรียกใช้

8
ที่ได้ผลสำหรับฉัน ความหมายของ "Android Dependencies" คืออะไรและเหตุใดจึงช่วยในกรณีนี้โดยเฉพาะ
Oleg Gryb

ทำงานได้อย่างสมบูรณ์แบบสำหรับฉัน! ขอบคุณมาก!
prajitdas

7
คำแนะนำเหล่านี้สำหรับคราสหรือไม่? ฉันทำตามคำแนะนำเหล่านี้สำหรับ Android Studio ไม่ได้ ของฉันคืออะไรproject? นั่นหมายความว่าอย่างไร?
Adam Johns

1
ใช่คำแนะนำเหล่านี้ใช้สำหรับคราส
คริส

2
ลิงค์นี้มีขั้นตอนสำหรับ Android Studio stackoverflow.com/questions/18533054/…
Joseph Selvaraj

13

สำหรับพวกคุณที่มีปัญหานี้บน Android Studio ฉันมีปัญหาเดียวกันหลังจากการรวมและด้วยเหตุผลบางอย่างมันยังคงอยู่หลังจากนั้นcleanและinvalidate cash/restartการดำเนินการที่ทำให้ฉันบ้า

ปรากฎว่าสามารถแก้ไขได้โดยเรียกใช้ gradle build หนึ่งครั้งจากบรรทัดคำสั่ง เพียงเรียกใช้ n ไดเร็กทอรีโปรเจ็กต์ต่อไปนี้:

./gradlew assemble clean
./gradlew assemble

ฉันหวังว่ามันจะช่วยใครบางคนที่ต้องเสียเวลาและความยุ่งยากที่ฉันต้องผ่าน


ทำงานให้ฉันด้วย
davedavedave

12

ฉันมีปัญหาเดียวกันสิ่งนี้ใช้ได้กับฉัน

1) เส้นทางเต็มของกิจกรรมใน mainfest แทนที่เส้นทางสัมพัทธ์

2) ลบโฟลเดอร์ 'สร้าง' และล้างโครงการ


การลบโฟลเดอร์สร้างใช้ได้ผลสำหรับฉัน ฉันเสียเวลาไปสองสามชั่วโมงกับปัญหานี้ขอบคุณ
Guy S

ทำงานให้ฉันด้วย ขอบคุณ.
Dushyant Suthar

นี่คือข้อตกลงที่แท้จริง XD
noob-Sci-Bot

10

หากคุณเพิ่มใหม่Library Projectเป็นโมดูลในโปรเจ็กต์ Android ของคุณและคุณกำลังใช้Kotlinในไลบรารีของคุณอย่าลืมเพิ่ม

apply plugin: 'kotlin-android'

ที่ด้านบนของไฟล์ Gradle ของโมดูลของคุณ Android Studio ไม่เพิ่มบรรทัดนี้เมื่อคุณสร้างโมดูลใหม่และอาจทำให้คุณเสียเวลาเหมือนฉัน

แก้ไข:หลังจากนั้นไม่นานฉันก็ต่อสู้กับปัญหานี้อีกครั้งและครั้งนี้ฉันลืมเพิ่มโมดูลของฉันเป็นการพึ่งพาโครงการ :)


แก้ไขให้ฉันและฉันแค่ต้องการโพสต์คำตอบ ใครข้ามไปยังหน้าสองใน SO เพื่อหาวิธีแก้ไข
Kuno

ปัญหานี้เกิดขึ้นเมื่อเราใช้โครงการไลบรารี java ... วิธีนี้แก้ไขปัญหาของฉัน
Devrath

สิ่งนี้ได้ผลสำหรับฉันและทำให้ฉันรู้ว่าฉันหายไป classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
เจ้าชาย

9

หากคุณใช้ Eclipse ให้ลองใช้ Project -> Clean


ใช้งานได้กับสตูดิโอ Android - ทำความสะอาด / สร้างโครงการและเรียกใช้
frcake

7

สิ่งนี้จะเกิดขึ้นหากเราเปลี่ยน Build Path ของแอพซึ่งอาจเป็นในกรณีใด ๆ ของการเพิ่มหรือการลบหรือการเปลี่ยนไลบรารีหรือไฟล์. jar ทางออกที่ดีที่สุดคือรีสตาร์ท Eclipse


6

หากคุณได้รับข้อผิดพลาดนี้ขณะใช้คุณลักษณะ Instant Run ใหม่ใน Android Studio 2.0 ขึ้นไปนี่เป็นข้อบกพร่องบางอย่างที่อยู่ข้างพวกเขา
เพื่อแก้ไขปัญหานี้คุณจะต้องหยุดแอปของคุณด้วยตนเองบนอุปกรณ์ / Emulator ถ้ามันไม่ได้หยุดแล้วจาก Android BuildRebuild Projectสตูดิโอเลือก
จากนั้นคลิกปุ่มRunหรือSHIFT + F10


6

สำหรับผู้ที่มี multidex ให้เขียนสิ่งนี้

ภายในbuild.gradle

apply plugin: 'com.android.application'

android {
 defaultConfig {
      multiDexEnabled true
  }
 dexOptions {
        javaMaxHeapSize "4g"
    }
}

dependencies {
    compile 'com.android.support:appcompat-v7:+'
    compile 'com.google.android.gms:play-services:+'
    compile 'com.android.support:multidex:1.0.1'
}

เขียนชั้นเรียนEnableMultiDexด้านล่าง

import android.content.Context;
import android.support.multidex.MultiDexApplication;

public class EnableMultiDex extends MultiDexApplication {
    private static EnableMultiDex enableMultiDex;
    public static Context context;

    public EnableMultiDex(){
        enableMultiDex=this;
    }

    public static EnableMultiDex getEnableMultiDexApp() {
        return enableMultiDex;
    }

    @Override
    public void onCreate() {
        super.onCreate();
        context = getApplicationContext();

    }
}

และAndroidManifest.xmlเขียนclassNameนี้ไว้ในแท็ก Application

 <application
    android:name="YourPakageName.EnableMultiDex"
    android:hardwareAccelerated="true"
    android:icon="@drawable/wowio_launch_logo"
    android:label="@string/app_name"
    android:largeHeap="true"
    tools:node="replace">

1
ohhhhh mahn ... คำตอบที่สมบูรณ์แบบ .. ฉันเห็นคำตอบนี้ แต่ไม่มีใครโหวตดังนั้นฉันจึงละเลยสิ่งนี้และไปหาคำตอบที่ได้รับการโหวต แต่ไม่ได้ผลในที่สุดฉันก็ทดสอบอันนี้และฉันได้รับมันขอบคุณมาก :) :) :) :)
Sachin Varma

ดีใจที่ช่วย :)
Manohar Reddy

2
จุดหลักคือการขยายโปรแกรมจากชั้นแทนMultiDexApplication Application
VSB

ขอบคุณ. ฉันมีแอปพลิเคชันบางอย่างในรายการ Manifest แล้ว ขยายจากMultiDexApplicationและข้อยกเว้นหายไปใน Android 4.4
CoolMind

6

หากคุณใช้Multidex บน Android 4.4และรุ่นก่อนปัญหาของคุณอาจเป็นเพราะคลาสกิจกรรมของคุณอยู่ในไฟล์ dex ที่สองดังนั้นระบบ Android จึงไม่พบ

หากต้องการเก็บคลาสกิจกรรมของคุณไว้ในไฟล์ dex หลักโปรดดูหน้านี้:

https://developer.android.com/studio/build/multidex.html#keep


เพื่อหาที่เรียนอยู่ในไฟล์ Dex ใช้ Android สตูดิโอ

เพียงลากและวาง apk ของคุณลงใน Android Studio คุณควรจะเห็นไฟล์ dex ของคุณใน apk explorer

จากนั้นเลือกไฟล์ dex เพื่อดูว่ามีคลาสอะไรบ้าง


ทางเลือกอื่นคือ dexdump:

คุณสามารถตรวจสอบเนื้อหาของไฟล์ dex ที่มีอยู่ใน apk ของคุณโดยใช้คำสั่งdexdumpซึ่งสามารถพบได้ใน

android-sdk / build-tools / 27.0.3 / dexdump

สำหรับผู้ใช้ windows โปรดดูเครื่องมือนี้ที่ฉันสร้างขึ้นเพื่อให้กระบวนการนี้ง่ายขึ้น


1
เมื่อเชื่อมโยงเครื่องมือของคุณเองให้แน่ใจว่าจะประกาศคุณเป็นเจ้าของมัน
LW001

5

ในกรณีของฉันมันเป็นกระบวนการลดขนาด proguard ที่ลบคลาสที่สำคัญบางอย่างออกจาก apk การผลิตของฉัน

วิธีแก้ไขคือแก้ไขไฟล์ proguard-rules.pro และเพิ่มสิ่งต่อไปนี้:

-keep class com.someimportant3rdpartypackage.** { *; }


3

เชื่อฉันหรือไม่ ... ฉันลองเกือบทุกคำตอบที่ฉันพบที่นี่ใน stackoverflow ไม่มีอะไรจะช่วยได้จนกว่าฉันจะรีสตาร์ทเครื่อง Android Studio ของฉันทำงานบน Ubuntu 16.04 LTS


เหมือนกันที่นี่ลองทั้งหมดแล้วรีสตาร์ทตามความคิดเห็นของคุณ ฉันเห็นในผลลัพธ์ของฉันอ้างอิงถึงชื่อคลาส refactored ว่า "ไม่พบ" ทั้งๆที่ฉันลบโฟลเดอร์ build ทั้งหมด .. เพิ่งเริ่ม android
Alwin Kesler

2

ฉันพบข้อผิดพลาดนี้ครั้งหนึ่งเมื่อฉันกำหนดคลาสที่ขยายมุมมอง แต่อ้างถึงมุมมองแบบกำหนดเองนี้ในไฟล์เลย์เอาต์ด้วยชื่อที่ไม่ถูกต้อง แต่<com.example.customview/>ฉันได้รวมไว้<com.customview/>ในไฟล์เลย์เอาต์ XML


2

ฉันประสบปัญหาเดียวกันและแก้ไขได้โดยทำสิ่งต่อไปนี้:

จากเมนูสร้างให้เลือก

1- โครงการสะอาด

2- สร้าง APK


ฉันมักจะใช้เวลาหลายชั่วโมงในการค้นหาวิธีแก้ปัญหาเกี่ยวกับ SO และปรากฎว่า Clean -> Build คือทั้งหมดที่ฉันต้องทำ
Shishir Shetty

2

ฉันพบปัญหาเดียวกันและสังเกตว่าโค้ดตัวอย่างถูกใส่ไว้ในไดเร็กทอรี "java" แทนที่จะเป็นไดเร็กทอรี "src" หลังจากย้ายรหัสไปที่ src ปัญหาได้รับการแก้ไขแล้ว

ตรวจสอบให้แน่ใจว่าไดเร็กทอรีแอพแยกออกเป็นหลายโฟลเดอร์ เช่น/main/com/site/appname/ไม่/main/com.site.appname/

หวังว่าจะได้ผลนะ ~


คุณตอกปัญหาที่ฉันมีบนหัว! นอนหลับไม่เพียงพอไม่รู้ด้วยซ้ำว่าคลาสอยู่ในโฟลเดอร์ Java :)
bran.io

2

ฉันประสบปัญหาเดียวกันและหลังจากทำงานและค้นหามาหลายครั้งฉันก็คิดหาวิธีแก้ปัญหา: ฉันเพิ่งทำความสะอาดโครงการจากนั้นสร้าง apk -Build-> Clean Project -Build-> Build APK (s) หวังว่าจะเป็นประโยชน์ .....


1

ฉันมีปัญหานี้เมื่อเร็ว ๆ นี้และฉันใช้ Android Studio 0.8.4

ปัญหาคือฉันตัดสินใจเปลี่ยนชื่อไฟล์เค้าโครงเมนู XML ที่ชื่อว่า main.xml

คลิกขวาที่มันและเลือกRefactor -> เปลี่ยนชื่อ ก่อนที่จะเปลี่ยนชื่อใหม่ให้แน่ใจว่าได้ยกเลิกการเลือก"ค้นหาในความคิดเห็นและสตริง"และกดRefactor

เนื่องจากไฟล์ของฉันเดิมชื่อ'main'มันจึงเปลี่ยนชื่อพา ธ วิกฤตใน app.iml และ build.gradle ซึ่งส่วนใหญ่เป็น java.srcDirs ใน build.gradle เนื่องจากพา ธ ถูกกำหนดเป็น'src/main/java'ไฟล์.

ฉันหวังว่านี่จะช่วยทุกคนที่อาจประสบปัญหานี้


1

ฉันมีปัญหานี้หลังจากอัปเกรดจากเวอร์ชัน 18 หลังจากการอัปเกรดฉันมีสิ่งต่อไปนี้: Project Build Target คือ 5.01, targetSDKVersion = 21

แต่: Build Tools ยังคงมาจาก Android 4.3.1 (18) สิ่งที่ฉันสังเกตเห็นคือแอปเหล่านั้นที่ได้รับกิจกรรมจาก ActionBarActivity ขัดข้องด้วยข้อผิดพลาดข้างต้นซึ่งยังไม่ทำงาน

ดังนั้นการแก้ไขง่ายๆคือใช้Android SDK Build Tools 21.1.2 ล่าสุด แทนที่จะใช้เฉพาะ Android SDK Build Tools 18 ซึ่งดูเหมือนจะเป็นค่าเริ่มต้น

ดังนั้นผู้ร้ายจึงดูเหมือนว่าไลบรารี Appcompat ซึ่งฉันใช้สำหรับ Actionbar ย้อนหลัง

และโดยวิธีการ : การใช้ไลบรารี appcompat ฉันต้องตั้งค่า / แก้ไข: $SDKInstallDIR$\Android\android-sdk\extras\android\support\v7\appcompat\project.properties target=android-21(ซึ่งแนะนำในโพสต์ที่มีประโยชน์อื่น ๆ และมีค่าเป็น 19 โดยค่าเริ่มต้น))


1

ฉันมีปัญหาเดียวกันใน Windows ฉันได้เปลี่ยนชื่อเส้นทางไปยังโครงการเป็นสิ่งที่มีช่องว่าง

ตรวจสอบให้แน่ใจว่าเส้นทางไปยังโครงการของคุณไม่มีช่องว่าง


คุณกำลังพูดถึงเส้นทางอะไร?
Quality Catalyst

1

โซลูชันที่กล่าวถึงที่นี่ -> โซลูชัน Multidex Issueใช้ได้กับฉัน ด้านล่างนี้คือสิ่งที่ต้องเพิ่มในบริบทของแอปพลิเคชัน:

@Override
protected void attachBaseContext(Context base) {
    super.attachBaseContext(base);
    MultiDex.install(this);
}

0

ฉันมีปัญหานี้เกิดขึ้นจากหลายสาเหตุ แต่ฉันเห็นสิ่งนี้ใน stacktrace ของคุณ " **Unable to instantiate activity ComponentInfo{...}: java.lang.ClassNotFoundException: Didn't find class "..." on path: DexPathList[[**" ฉันพบความแตกต่างในตัวฉัน.classpathก่อนที่มันจะหยุดทำงาน

 <?xml version="1.0" encoding="UTF-8"?>
<classpath>
    <classpathentry kind="src" path="src"/>
    <classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
    <classpathentry kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/>
    <classpathentry kind="src" path="gen"/>
    <classpathentry kind="output" path="bin/classes"/>
</classpath>

ฉันได้เพิ่มบรรทัด:

<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.DEPENDENCIES"/>

นี่คือเวอร์ชันสุดท้าย:

  <?xml version="1.0" encoding="UTF-8"?>
<classpath>
    <classpathentry kind="src" path="src"/>
    <classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
    <classpathentry kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/>
    <classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.DEPENDENCIES"/>
    <classpathentry kind="src" path="gen"/>
    <classpathentry kind="output" path="bin/classes"/>
</classpath>

ตอนนี้ใช้งานได้แล้ว! =)


0

ฉันมีปัญหาเดียวกัน ตามที่ @weiweia แนะนำให้ย้ายรหัสจากไดเร็กทอรี java ไปที่ src ได้ผลสำหรับฉัน ฉันยังลบ Android Dependencies ออกจาก Project -> Properties -> Java Build Path -> Order and Export และตรวจสอบให้แน่ใจว่าได้รวม Library Projects ไว้ในหน้าจอ Android เท่านั้น


0

ฉันมีปัญหานี้มาระยะหนึ่งแล้วและเช่นเดียวกับคนอื่น ๆ คำตอบข้างต้นไม่ได้ใช้กับโครงการของฉัน

ในโปรเจ็กต์ของฉันฉันได้เชื่อมโยงโปรเจ็กต์เข้ากับโปรเจ็กต์ของฉันและมันกำลังขว้าง ClassDefNotFoundError ทุกครั้งที่มีการเรียกใช้โค้ดสำหรับโปรเจ็กต์อื่น

นี่คือทางออกของฉัน ฉันไปที่คุณสมบัติโครงการของโครงการของฉันและ Java Build Path กด "Source" -tab และ "link source" จากโฟลเดอร์ src ของโปรเจ็กต์อื่นไปยังโปรเจ็กต์ของฉันเองและตั้งชื่อโฟลเดอร์ใหม่ว่า "core-src"

หวังว่าโซลูชันนี้จะช่วยใครบางคน


0

ฉันมีปัญหาเดียวกัน ฉันใช้ Xamarin.Android

ปัญหาในกรณีของฉันคือฉันเปลี่ยน versionCode และ versionName

ฉันไม่มีปัญหาเมื่อฉันตั้งค่าแบบนี้:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="pac.ka.ge" android:versionCode="1" android:versionName="1.0" android:installLocation="auto">

ปัญหาปรากฏขึ้นเมื่อฉันเปลี่ยนเป็นสิ่งนี้ (versionCode 2 และ versionName 0.0.1):

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package=" pac.ka.ge " android:versionCode="2" android:versionName="0.0.1" android:installLocation="auto">

ฉันแก้ไขปัญหาโดยเปลี่ยนเป็น versionCode 2 และ versionName 1.0.0.1 ดังนี้:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package=" pac.ka.ge " android:versionCode="2" android:versionName="1.0.0.1" android:installLocation="auto">

ฉันไม่แน่ใจว่าทำไมถึงเป็นปัญหาบางที Android อาจไม่ชอบ versionName ที่ต่ำกว่าด้วย versionCode ที่สูงกว่า

ฉันพบสิ่งต่อไปนี้ในhttp://developer.android.com/guide/topics/manifest/manifest-element.html#vname

android: versionCode หมายเลขเวอร์ชันภายใน หมายเลขนี้ใช้เพื่อระบุว่าเวอร์ชันหนึ่งเป็นเวอร์ชันล่าสุดมากกว่าเวอร์ชันอื่นโดยตัวเลขที่สูงกว่าจะแสดงเวอร์ชันล่าสุด นี่ไม่ใช่หมายเลขเวอร์ชันที่แสดงให้ผู้ใช้เห็น หมายเลขนั้นถูกกำหนดโดยแอตทริบิวต์ versionName ต้องกำหนดค่าเป็นจำนวนเต็มเช่น "100" คุณสามารถกำหนดได้ตามที่คุณต้องการตราบเท่าที่แต่ละเวอร์ชันต่อเนื่องมีจำนวนที่สูงกว่า ตัวอย่างเช่นอาจเป็นหมายเลขรุ่น หรือคุณสามารถแปลหมายเลขเวอร์ชันในรูปแบบ "xy" เป็นจำนวนเต็มโดยการเข้ารหัส "x" และ "y" แยกกันใน 16 บิตล่างและบน หรือคุณสามารถเพิ่มจำนวนทีละครั้งเมื่อมีการเปิดตัวเวอร์ชันใหม่

android: versionName หมายเลขเวอร์ชันที่แสดงให้ผู้ใช้เห็น แอ็ตทริบิวต์นี้สามารถตั้งค่าเป็นสตริงดิบหรืออ้างอิงไปยังรีซอร์สสตริง สตริงไม่มีจุดประสงค์อื่นนอกจากที่จะแสดงต่อผู้ใช้ แอตทริบิวต์ versionCode มีหมายเลขเวอร์ชันที่สำคัญที่ใช้ภายใน


0

ในกรณีที่มีใครประสบปัญหาเดียวกับฉันและไม่มีคำตอบที่แนะนำที่นี่ช่วยได้

สำหรับฉันสาเหตุคือการ refactor สตูดิโอ Android นั้นมีปัญหา ฉันย้ายคลาสภายในออกนอกคลาสซึ่งเป็น View และด้วยเหตุนี้จึงมี xml ซึ่งกำหนดเส้นทางตรง เส้นทางนี้จะไม่ถูกปรับโครงสร้างใหม่โดยสตูดิโอ! และจะไม่มีการโยนข้อผิดพลาด

หวังว่านี่จะช่วยทุกคน ไชโย


0

ในกรณีของเราเราต้องการรวบรวมเวอร์ชัน Vagrant และมีข้อผิดพลาดเดียวกัน แก้ไขโดยclean projectและrebuild projectในเมนูสร้าง


0

ฉันเพิ่งรีสตาร์ทอุปกรณ์และเรียกใช้แอป มันทำงานได้โดยไม่มีปัญหาใด ๆ หวังว่านี่จะช่วยใครสักคน :)


0

ฉันพบข้อผิดพลาดนี้ในAndroid Studioเมื่อฉันพยายามทำการดีบักในอุปกรณ์ที่มีAPI 23ดังนั้นฉันจึงตรวจสอบ Android Studio และฉันสังเกตเห็นว่าฉันไม่ได้ติดตั้งเวอร์ชัน API 23นี้ หลังจากติดตั้งฉันแก้ไขปัญหาได้


0

ฉันมีปัญหานี้หลายครั้งและบ่อยครั้งที่ฉันไม่ได้ทำอะไรผิดอย่างชัดเจนกับการอ้างอิง

คุณควรตรวจสอบเสมอว่าคลาส 'ไม่พบ' นี้มีอยู่ใน apk สุดท้ายหรือไม่ หากเป็นเช่นนั้นในกรณีของฉันปัญหามักจะ:

ไม่ใช่ว่าไม่พบคลาสที่กำหนด แต่ไม่สามารถโหลดได้เนื่องจาก super class หายไป

ตรวจสอบว่าคลาสที่คุณขยายนั้นพร้อมใช้งานหรือไม่จากนั้นลองแก้ไขบิลด์สคริปต์หรือการอ้างอิงตามนั้น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.