java.lang.ClassNotFoundException: Não localizou a classe no caminho: dexpathlist

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

Atualmente estou trabalhando em um projeto em que tenho que usar o ndk puramente nativo. Funcionou quando tentei executar um exemplo de helloworld da fonte de motor Irrlicht. Então eu tento usá-lo no meu projeto seguindo o mesmo formato daquele exemplo. Mas eu peguei:

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

enquanto executando meu projeto.

Aqui está o meu arquivo 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");
} 

#fim se

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

E eu dei o nome da atividade em AndroidManifest.xml:

...                 

Qual é o erro que estou fazendo aqui? Vou postar código completo se necessário.

4 Comments
Siddharth_Vyas 03/14/2014
Você está usando arquivos jar externos?
Karthik Sivam 03/14/2014
@SiddharthVyas Não, não estou usando arquivos jar externos.
1 Igor Ganapolsky 08/09/2016
Sua aplicação é multi-dexed? Se sim, então isso explica o problema.
j2emanue 07/05/2017
Quando eu fiz um apk assinado este erro não aconteceu. apenas depurar

13 Answers


mnsalim 05/23/2017.

Eu tive um problema semelhante, aqui está a minha solução:

  1. Clique com o botão direito do mouse no seu projeto e selecione Properties .
  2. Selecione Java Build Path no menu à esquerda.
  3. Selecione a guia Order and Export .
  4. Na lista, verifique se as bibliotecas ou os jars externos que você adicionou ao seu projeto estão checked .
  5. Finalmente, limpe seu projeto e execute.

Você também pode verificar essa resposta.

4 comments
1 FoxDonut 11/06/2016
Esta é a solução correta para a questão. Eu testei isso com o meu jogo libgdx com os mesmos erros encontrados acima. Eu encontrei esses erros usando o log gerado com o meu telefone (Samsung Galaxy S6). Depois de aplicar essa solução, todos os meus problemas foram resolvidos.
2 Zin Min 03/25/2017
Não consigo encontrar Propriedades do botão direito do projeto. Pode ser que eu sou estúpido. :(
2 user3036320 04/19/2017
por favor, mostre a solução de estúdio android ...
2 Skyler 07/08/2017
Não consigo encontrar propriedades, qualquer um descobrir como navegar para a página listada

Sushil 03/14/2014.

Este parece ser um problema no seu caso. O caminho relativo da sua atividade no manifesto não está correto:

 

substitua isto por:

 

ou

 
1 comments
1 Karthik Sivam 03/14/2014
Eu tentei os dois, mostra a mesma exceção.

Akash Bisariya 03/06/2017.

Eu deveria entender o problema apenas vendo

dex errors

Mas demorou meio dia para consertar o problema.
Eu corrijo isso seguindo as instruções da página de desenvolvedores do Android: https://developer.android.com/studio/build/multidex.html

Primeiro adicione isto ao arquivo gradle.build:

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

    // Enabling multidex support.
    multiDexEnabled true
}

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

Em seguida, estenda a classe Application (ou declare a classe do aplicativo em AndroidManifest.xml ou override attachBaseContext() função override attachBaseContext() ) com a classe MultiDexApplication conforme instruído no link acima.

Isso é tudo e resolveu o problema.

4 comments
1 milosmns 08/30/2016
Adicionar multi-dex é útil somente quando você passa o limite de contagem de referência (56k), e é very instável e very pouco confiável antes do Lollipop. Isso deve ser usado para corrigir problemas como último recurso.
Akash Bisariya 08/30/2016
então qual deve ser a solução de acordo com você
milosmns 08/30/2016
Só estou dizendo que o multi-dex causa mais problemas do que ajuda, o que é claramente indicado no site do desenvolvedor. Eu não estaria aqui procurando uma resposta se tivesse uma, teria?
Akash Bisariya 08/30/2016
Ok obrigado pela informação, por favor atualize aqui se você encontrou uma boa solução, seria uma grande ajuda.

V. Kalyuzhnyu 07/07/2016.

A exclusão do aplicativo no dispositivo e a limpeza do projeto funciona para mim


crazyjune 06/13/2014.
  1. excluir a pasta bin
  2. mudar a ordem das bibliotecas
  3. limpar e reconstruir

trabalhou para mim.


Ali Gürelli 10/13/2016.

Eu resolvi isso usando: ./gradlew --stop comando no terminal android studio. Depois de executar este comando, limpe e reconstrua o projeto.


Redman 01/05/2017.

Para qualquer um que está tendo multidexpermitir, escreva isto

dentro de 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'
} 

escreva uma classe EnableMultiDex como abaixo

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

    }
} 

e no AndroidManifest.xml escrever esta className dentro da tag Application

 

Ashik Abbas 07/26/2017.

Eu tentei todas as opções possíveis, mas o resultado é zero. Finalmente encontrei a solução correta que é útil para mim. Basta desativar o Instant Run Go em File -> Settings -> Build, Execution, Deployment -> Instant Run -> Desmarque a caixa de seleção para execução instantânea . Execute o seu aplicativo uma vez e este arquivo apk funcione corretamente ..


Walking Code 05/05/2014.

Apenas mude o nome da pasta de lib para libs ,

Então você verá algumas marcas de erro em seu projeto, para resolver isso, clique com o botão direito do mouse no projeto>

Properties > Java Build Path > libraries :

Remova toda a biblioteca com marcas vermelhas, depois apply > ok > depois disso, clean your project . TADA veja a mágica :)

1 comments
Shubham 10/27/2015
nome da pasta é apenas libs

Tere Bentikh 09/29/2015.

Depois que eu tentei as respostas dadas, eu descobri outra razão para a mesma exceção, que eu tinha que adicionar a biblioteca que eu estou usando manualmente para a minha biblioteca principal através de

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 

antes desta solução, eu usei o "Fix Project setup" de dentro do arquivo .java no eclipse, mas isso não funcionou, então eu tive que adicioná-lo manualmente aqui e funcionou


dees91 11/21/2016.

Se você receber esse erro após remover alguma dependência gradle, verifique seu manifesto e certifique-se de ter removido todas as entradas correspondentes a essa dependência.

1 comments
Petter Friberg 11/21/2016
Por favor, não adicione a mesma resposta a várias perguntas. Responda o melhor e sinalize o resto como duplicados. É aceitável adicionar uma resposta duplicada a várias perguntas?

Quando você estiver usando multidex, tente estender sua classe de aplicativo com MultiDexAppication em vez de Application e substituir o método abaixo, necessário para Android abaixo de 5.0 (porque 5.0 e acima suportam o multidex)

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

e nas dependências adicionar isso

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

Shivegeeky 06/23/2017.

Como por meu understading eu recebo o problema após a atualização android studio 2.1 a 2.3, devido ao recurso instantâneo meu aplicativo não será executado quando eu copiar o apk de saída e colocar no sdcard. Para este problema eu construo o apk da opção de construção do build apk no android studio.

Related questions

Hot questions

Language

Popular Tags