java.lang.ClassNotFoundException: Hittade inte klass på sökväg: dexpathlist

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

Jag jobbar för närvarande på ett projekt där jag måste använda ren inbyggd ndk. Det fungerade när jag försökte köra ett helloworld-exempel från Irrlicht-motorkällan. Sedan försöker jag använda det i mitt projekt efter samma format i det exemplet. Men jag fick:

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]] 

medan jag kör mitt projekt.

Här är min main.cpp-fil:

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

#endif

i 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) 

Och jag har gett Aktivitetsnamn i AndroidManifest.xml:

...                 

Vad är det fel jag gör här? Jag lägger upp fullständig kod om det behövs.

4 Comments
Siddharth_Vyas 03/14/2014
Använder du några externa burkfiler?
Karthik Sivam 03/14/2014
@SiddharthVyas Nej, jag använder inte externa burkfiler i det här.
1 Igor Ganapolsky 08/09/2016
Är din ansökan multi-dexed? I så fall förklarar det problemet.
j2emanue 07/05/2017
när jag gjorde en signerad apk höll inte detta fel. bara felsöka

13 Answers


mnsalim 05/23/2017.

Jag hade ett liknande problem, här är min lösning:

  1. Högerklicka på ditt projekt och välj Properties .
  2. Välj Java Build Path från menyn till vänster.
  3. Välj fliken Order and Export exportera.
  4. På listan ser du till att bibliotek eller externa burkar du lagt till i ditt projekt är checked .
  5. Slutligen rengör ditt projekt och kör.

Du kan också kolla detta svar.

4 comments
1 FoxDonut 11/06/2016
Det här är rätt lösning på frågan. Jag har testat detta med mitt libgdx-spel med samma fel som hittats ovan. Jag hittade dessa fel genom att använda loggen som genererades med min telefon (Samsung Galaxy S6). När jag tillämpade den här lösningen löstes alla mina problem.
2 Zin Min 03/25/2017
Jag kan inte hitta Egenskaper från högerklick på projekt. Måste jag är dum. :(
2 user3036320 04/19/2017
snälla visa android studio-lösningen ...
2 Skyler 07/08/2017
Jag kan inte hitta egenskaper heller, någon räknar ut hur man navigerar till den angivna sidan

Sushil 03/14/2014.

Detta verkar vara problem i ditt fall. Den relativa sökvägen för din aktivitet i manifest är inte korrekt:

 

ersätt detta med:

 

eller

 
1 comments
1 Karthik Sivam 03/14/2014
Jag har provat båda, det visar samma undantag.

Akash Bisariya 03/06/2017.

Jag borde förstå problemet genom att bara se

dex errors

Men det tog halv dag att lösa problemet.
Jag åtgärdar detta genom att följa android-utvecklarens sidans instruktioner: https://developer.android.com/studio/build/multidex.html

Lägg först det här till gradle.build-filen:

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

    // Enabling multidex support.
    multiDexEnabled true
}

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

Utöka sedan Application class (eller förklara applikationsklassen i AndroidManifest.xml eller override attachBaseContext() -funktionen) med MultiDexApplication klassen enligt instruktionerna på ovanstående länk.

Det är allt och det löste problemet.

4 comments
1 milosmns 08/30/2016
Lägga till multi-dex är endast användbar när du passerar referensgränsen (56k), och den är very instabil och very opålitlig före Lollipop. Detta bör användas för att lösa problem som en sista utväg.
Akash Bisariya 08/30/2016
vad ska då vara lösningen enligt dig?
milosmns 08/30/2016
Jag säger bara att multi-dex orsakar mer problem än det hjälper, vilket tydligt framgår av utvecklarens webbplats. Jag skulle inte vara här letar efter ett svar om jag hade en, skulle jag?
Akash Bisariya 08/30/2016
Okej tack för informationen, Vänligen uppdatera här om du hittade en bra lösning, det skulle vara en bra hjälp.

V. Kalyuzhnyu 07/07/2016.

Raderingen av app på enheten och rengöring av projekt fungerar för mig


crazyjune 06/13/2014.
  1. Ta bort bin-mappen
  2. ändra ordning på bibliotek
  3. rena och ombyggda

arbetade för mig.


Ali Gürelli 10/13/2016.

Jag löste det genom att använda: ./gradlew --stop kommando i android studio terminal. Efter utför detta kommando så rengör och bygga om projektet.


Redman 01/05/2017.

För den som har multidex aktivera skriv detta

inuti 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'
} 

skriv en klass EnableMultiDex som nedan

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();

    }
} 

och i AndroidManifest.xml skriv det här className inuti Application taggen

 

Ashik Abbas 07/26/2017.

Jag försökte alla möjliga alternativ men resultatet är noll. Slutligen hittade jag rätt lösning som är till hjälp för mig. Gå bara för att inaktivera Instant Run Gå till File -> Settings -> Build, Execution, Deployment -> Direktkörning -> Avmarkera kryssrutan för direktkörning . Kör din app en gång och den här apk-filen fungerar korrekt.


Walking Code 05/05/2014.

Ändra bara ditt mappnamn från lib till libs ,

Då kommer du att se några felmärken i ditt projekt, för att lösa detta rightClick on project>

Properties > Java Build Path > libraries :

Ta bort allt bibliotek med röda märken på det, apply > ok > sedan clean your project . TADA se magiken :)

1 comments
Shubham 10/27/2015
mappnamn är bara libs

Tere Bentikh 09/29/2015.

efter att jag försökte få de givna svaren fick jag reda på en annan anledning till samma undantag, att jag var tvungen att lägga till biblioteket som jag använder manuellt till mitt huvudbibliotek genom

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 

innan den här lösningen använde jag "Fix Project Setup" från java-filen i eclipse, men det fungerade inte, så jag var tvungen att lägga till det manuellt här och det fungerade


dees91 11/21/2016.

Om du får det här felet efter att ha tagit bort något gradvis beroende, kontrollera ditt manifest och se till att du har tagit bort alla poster som motsvarar detta beroende.

1 comments
Petter Friberg 11/21/2016
Lägg inte samma svar på flera frågor. Besvara det bästa och flagga resten som dubbletter. Se Är det acceptabelt att lägga till ett duplikat svar på flera frågor?

När du använder multidex, försök sedan förlänga din applikationsklass med MultiDexAppication istället för Application och åsidosätt nedan metod som krävs för Android under 5,0 (eftersom 5.0 och senare stödjer multidexen)

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

och i beroenden lägg till detta

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

Shivegeeky 06/23/2017.

Enligt min undersökning får jag problemet efter uppdatering android studio 2.1 till 2.3 på grund av den omedelbara funktionen kommer min applikation inte att köras när jag kopierar apk från utdata och läggs in i SD-kortet. För detta problem bygger jag apk från build alternativ bygga apk i android studio.

Related questions

Hot questions

Language

Popular Tags