java.lang.ClassNotFoundException: Δεν βρέθηκε κλάση στη διαδρομή: dexpathlist

Karthik Sivam 08/21/2017. 13 answers, 93.384 views
java android android c++ android-ndk android-ndk

Αυτή τη στιγμή εργάζομαι σε ένα έργο στο οποίο πρέπει να χρησιμοποιήσω καθαρά μητρική γλώσσα. Δούλεψε όταν προσπαθώ να τρέχω ένα παράδειγμα helloworld από την πηγή του κινητήρα Irrlicht. Τότε προσπαθώ να το χρησιμοποιήσω στο έργο μου ακολουθώντας την ίδια μορφή αυτού του παραδείγματος. Αλλά πήρα:

03-14 01:40:05.308: E/AndroidRuntime(799): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.irrlicht.example1/android.app.POMActivity}: java.lang.ClassNotFoundException: Didn't find class "android.app.POMActivity" on path: DexPathList[[zip file "/data/app/com.irrlicht.example1-2.apk"],nativeLibraryDirectories=[/data/app-lib/com.irrlicht.example1-2, /system/lib]] 

ενώ τρέχει το σχέδιό μου.

Εδώ είναι το αρχείο main.cpp μου:

#include #include #include #include "android_tools.h"
#ifdef _IRR_ANDROID_PLATFORM_
void android_main(android_app* app)
{
__android_log_print(4 , "pom" , "nothing");
} 

#τέλος εαν

στο Android.mk:

LOCAL_PATH := $(call my-dir)/..
IRRLICHT_PROJECT_PATH := $(LOCAL_PATH)
include $(CLEAR_VARS)
LOCAL_MODULE := Irrlicht
LOCAL_SRC_FILES := /home/karthik/Android/Essentials/ogl-es/lib/Android/libIrrlicht.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := HelloWorldMobile1
LOCAL_CFLAGS := -D_IRR_ANDROID_PLATFORM_ -pipe -fno-exceptions -fno-rtti -fstrict-aliasing
LOCAL_C_INCLUDES := -I ../../include -I /home/karthik/Android/Essentials/ogl-es/include -I /home/karthik/Android/json/jsoncpp-src-0.5.0/libs/linux-gcc-4.8 -I /home/karthik/Android/json/jsoncpp-src-0.5.0/include/json 
LOCAL_SRC_FILES :=  android_tools.cpp main.cpp
LOCAL_LDLIBS := -lEGL -llog -lGLESv1_CM -lGLESv2 -lz -landroid -ldl 
LOCAL_STATIC_LIBRARIES := Irrlicht android_native_app_glue
include $(BUILD_SHARED_LIBRARY)
$(call import-module,android/native_app_glue) 

Και έχω δώσει όνομα δραστηριότητας στο AndroidManifest.xml:

...                 

Ποιο είναι το λάθος που κάνω εδώ; Θα δημοσιεύσω τον πλήρη κωδικό εάν δεν είναι απαραίτητο.

4 Comments
Siddharth_Vyas 03/14/2014
Χρησιμοποιείτε εξωτερικά αρχεία βάζας;
Karthik Sivam 03/14/2014
@SiddharthVyas Όχι, δεν χρησιμοποιώ εξωτερικά αρχεία βάζας σε αυτό.
1 Igor Ganapolsky 08/09/2016
Είναι η εφαρμογή σας πολύ δελεασμένη; Αν ναι, τότε αυτό εξηγεί το πρόβλημα.
j2emanue 07/05/2017
όταν έκανα ένα υπογεγραμμένο apk αυτό το σφάλμα δεν συνέβη. απλά εντοπίστε σφάλματα

13 Answers


mnsalim 05/23/2017.

Είχα ένα παρόμοιο πρόβλημα, εδώ είναι η λύση μου:

  1. Κάντε δεξί κλικ στο έργο σας και επιλέξτε Properties .
  2. Επιλέξτε Java Build Path από το μενού στα αριστερά.
  3. Επιλέξτε την καρτέλα Order and Export .
  4. Από τη λίστα βεβαιωθείτε ότι checked οι βιβλιοθήκες ή τα εξωτερικά βάζα που προσθέσατε στο έργο σας.
  5. Τέλος, καθαρίστε το έργο σας και τρέξτε.

Μπορείτε επίσης να ελέγξετε αυτήν την απάντηση.

4 comments
1 FoxDonut 11/06/2016
Αυτή είναι η σωστή λύση στην ερώτηση. Έχω δοκιμάσει αυτό με το παιχνίδι μου libgdx με τα ίδια λάθη που βρέθηκαν ως τα παραπάνω. Βρήκα αυτά τα σφάλματα χρησιμοποιώντας το ημερολόγιο που δημιουργήθηκε με το τηλέφωνό μου (samsung galaxy S6). Μόλις εφάρμοσα αυτή τη λύση, όλα τα ζητήματά μου λύθηκαν.
2 Zin Min 03/25/2017
Δεν μπορώ να βρω Ιδιότητες από το δεξί κλικ του έργου. Μπορεί να είμαι ηλίθιος. :(
2 user3036320 04/19/2017
παρακαλώ δείξτε τη λύση στούντιο Android ...
2 Skyler 07/08/2017
Δεν μπορώ επίσης να βρω ιδιότητες, κανείς δεν καταλαβαίνει πώς να πλοηγεί στη σελίδα που αναγράφεται

Sushil 03/14/2014.

Αυτό φαίνεται να είναι πρόβλημα στην περίπτωσή σας. Η σχετική πορεία της δραστηριότητάς σας στο δηλωτικό δεν είναι σωστή:

 

αντικαταστήστε το με:

 

ή

 
1 comments
1 Karthik Sivam 03/14/2014
Έχω δοκιμάσει και τα δύο, δείχνει την ίδια εξαίρεση.

Akash Bisariya 03/06/2017.

Πρέπει να καταλάβω το πρόβλημα απλά βλέποντας

dex errors

Αλλά χρειάστηκε μισή ημέρα για να διορθώσει το ζήτημα.
Το διορθώνω αυτό ακολουθώντας τις οδηγίες της σελίδας του Android Developers: https://developer.android.com/studio/build/multidex.html

Πρώτα προσθέστε αυτό στο αρχείο gradle.build:

defaultConfig {
    ...
    minSdkVersion 14
    targetSdkVersion 21
    ...

    // Enabling multidex support.
    multiDexEnabled true
}

 dependencies {
     compile 'com.android.support:multidex:1.0.0'
 } 

Στη συνέχεια επεκτείνετε την κλάση εφαρμογής (ή δηλώστε την τάξη εφαρμογής στο AndroidManifest.xml ή override attachBaseContext() ) με την κλάση MultiDexApplication όπως MultiDexApplication στον παραπάνω σύνδεσμο.

Αυτό είναι όλο και λύνεται το πρόβλημα.

4 comments
1 milosmns 08/30/2016
Η προσθήκη του multi-dex είναι χρήσιμη μόνο όταν περάσετε το όριο μέτρησης αναφοράς (56k) και είναι very ασταθές και very αναξιόπιστο πριν από το Lollipop. Αυτό πρέπει να χρησιμοποιηθεί για την επίλυση προβλημάτων ως έσχατη λύση.
Akash Bisariya 08/30/2016
τότε ποια θα πρέπει να είναι η λύση σύμφωνα με εσάς
milosmns 08/30/2016
Λέω απλά ότι το multi-dex προκαλεί περισσότερα προβλήματα από ό, τι βοηθάει, κάτι που δηλώνεται σαφώς στην ιστοσελίδα του προγραμματιστή. Δεν θα ήμουν εδώ ψάχνοντας για μια απάντηση, αν είχα ένα, θα ήθελα;
Akash Bisariya 08/30/2016
Εντάξει ευχαριστώ για τις πληροφορίες, ενημερώστε εδώ αν βρεθεί μια καλή λύση, θα ήταν μια μεγάλη βοήθεια.

V. Kalyuzhnyu 07/07/2016.

Η διαγραφή της εφαρμογής στη συσκευή και ο καθαρισμός έργων έργων για μένα


crazyjune 06/13/2014.
  1. διαγράψτε το φάκελο δοχείων
  2. αλλάξτε τη σειρά των βιβλιοθηκών
  3. καθαρίστε και ανοικοδομήστε

εργάστηκε για μένα.


Ali Gürelli 10/13/2016.

το έχω λύσει χρησιμοποιώντας: ./gradlew --stop εντολή στο τερματικό στούντιο Android. Αφού εκτελέσετε αυτήν την εντολή, καθαρίστε και ξανακτίστε το έργο.


Redman 01/05/2017.

Για όποιον έχει πολυδεξικό, γράψτε αυτό

μέσα στο 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 μέσα στην ετικέτα εφαρμογής

 

Ashik Abbas 07/26/2017.

Προσπάθησα όλες τις πιθανές επιλογές αλλά το αποτέλεσμα είναι μηδέν. Τέλος, βρήκα τη σωστή λύση που είναι χρήσιμη για μένα. Απλά απενεργοποιήστε την Άμεση Εκτέλεση Μεταβείτε στο Αρχείο -> Ρυθμίσεις -> Δημιουργία, Εκτέλεση, Ανάπτυξη -> Άμεση Εκτέλεση -> Αποεπιλέξτε το πλαίσιο ελέγχου για άμεση εκτέλεση . Εκτελέστε την εφαρμογή σας μία φορά και αυτό το αρχείο APK λειτουργεί σωστά.


Walking Code 05/05/2014.

Απλά Αλλάξτε το όνομα του φακέλου από lib σε libs ,

Στη συνέχεια, θα δείτε ορισμένα σημάδια σφάλματος στο έργο σας, για να επιλύσετε αυτό το rightClick on project>

Properties > Java Build Path > libraries :

Καταργήστε όλες τις βιβλιοθήκες με κόκκινα σημάδια επάνω τους, και στη συνέχεια apply > ok > αφού clean your project . TADA δείτε τη μαγεία :)

1 comments
Shubham 10/27/2015
το όνομα του φακέλου είναι μόνο libs

Tere Bentikh 09/29/2015.

αφού δοκίμασα τις απαντήσεις μου, ανακάλυψα έναν άλλο λόγο για την ίδια Εξαίρεση, ότι έπρεπε να προσθέσω τη βιβλιοθήκη που χρησιμοποιώ με το χέρι στην κύρια βιβλιοθήκη μου μέσω

Right click on my main library > 
Properties > 
Android > 
Go to the very bottom of the screen and click (Add) > 
Select my other library that caused the crash >Apply 

πριν από αυτή τη λύση, χρησιμοποίησα το "Fix Project setup" από το αρχείο .java σε έκλειψη, αλλά αυτό δεν λειτούργησε, γι 'αυτό έπρεπε να το προσθέσω με το χέρι εδώ και λειτούργησε


dees91 11/21/2016.

Αν λάβετε αυτό το σφάλμα μετά την κατάργηση κάποιας εξάρτησης από το πλέγμα, ελέγξτε το δηλωτικό σας και βεβαιωθείτε ότι έχετε καταργήσει όλες τις καταχωρήσεις που αντιστοιχούν στην εξάρτηση.

1 comments
Petter Friberg 11/21/2016
Μην προσθέτετε την ίδια απάντηση σε πολλές ερωτήσεις. Απαντήστε το καλύτερο και σημειώστε το υπόλοιπο ως διπλότυπα. Βλέπε Είναι αποδεκτό να προσθέσετε μια διπλή απάντηση σε διάφορες ερωτήσεις;

Όταν χρησιμοποιείτε multidex, στη συνέχεια προσπαθήστε να επεκτείνετε την τάξη εφαρμογής σας με το MultiDexAppication αντί της εφαρμογής και παρακάμπτετε τη μέθοδο που απαιτείται για το Android κάτω από το 5.0 (επειδή το 5.0 και το μεγαλύτερο επίπεδο υποστήριξης στο multidex)

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

και σε εξαρτήσεις προσθέστε αυτό

compile 'com.android.support:multidex:1.0.1' 

Shivegeeky 06/23/2017.

Όπως κατά την κατανόησή μου παίρνω το ζήτημα μετά την αναβάθμιση στο Android 2.1 στο 2,3 λόγω του στιγμιαίου χαρακτηριστικό μου αίτηση δεν θα τρέξει όταν αντιγράψω το apk από την έξοδο και να τεθεί στο sdcard. Για αυτό το πρόβλημα μπορώ να οικοδομήσω το apk από την κατασκευή επιλογή να χτίσει apk στο android studio.

Related questions

Hot questions

Language

Popular Tags