Estou com um problema ao tentar executar um aplicativo Android que, até adicionar uma segunda biblioteca externa ao caminho de criação, estava funcionando bem. Desde que adicionei o frasco scoreninja, agora recebo um NoClassDefFoundError quando tento executar o aplicativo.
Aqui está a mensagem:
02-11 21:45:26.154: ERROR/AndroidRuntime(3654): java.lang.NoClassDefFoundError: com.scoreninja.adapter.ScoreNinjaAdapter
Como todos os scripts de construção são gerados pelas ferramentas do Android (?), Não tenho certeza do que mais posso fazer além de limpar e reconstruir ou reiniciar o eclipse (eu já tentei os três). Alguém sabe como posso alterar isso?
Respostas:
Eu tive esse problema depois de atualizar o ADT.
Eu estava armazenando todos os meus arquivos JAR em uma pasta chamada "lib" e adicionando os frascos ao caminho de construção da maneira normal do Eclipse. Isso funcionou bem até a minha atualização.
Após minha atualização, eu estava obtendo o NoClassDefFoundError para uma classe que eu podia ver claramente que estava incluída no jar (verificando as classes ReferencedLibraries).
A solução foi remover meus jars do caminho de criação e renomear minha pasta "lib" para "libs". Esta é uma convenção de formigas e parece ser a maneira como o novo ADT encontra e inclui bibliotecas em um arquivo .apk. Depois que fiz isso, tudo funcionou bem.
fonte
Não precisei colocar a biblioteca de jar em recursos ou em lib (s), mas apenas marque a caixa para este jar em Propriedades -> Caminho de Construção Java -> "Ordem e Exportação" (ela estava listada antes, mas não selecionada) )
fonte
Ao adicionar o jar externo ao seu caminho de construção, ele adiciona o jar ao seu pacote, mas ele não estará disponível durante o tempo de execução.
Para que o jar esteja disponível no tempo de execução , você precisa:
assets
pastafonte
import
instrução para arquivos jar externos? Eu nunca os usei.assests
pasta?Eu tinha isso para o MapActivity. As compilações no Eclipse obtêm NoClassDefFound no depurador.
Esqueci de adicionar biblioteca ao manifesto,
<Application>...</Application>
elemento internofonte
Alterei a ordem dos projetos incluídos (Eclipse / Configurar caminho de compilação / Ordem e exportação). Mudei meus dois projetos dependentes para o topo da lista "Solicitar e exportar". Resolveu o problema "NoClassDefFoundError".
Isso é estranho para mim. Não ouvi falar da importância da ordem das bibliotecas e projetos incluídos. Android + Eclipse é divertido :)
fonte
Não tenho certeza se isso está relacionado ou se você ainda está procurando uma resposta, mas me deparei com esse tópico enquanto tentava pesquisar o mesmo erro (mas possivelmente por razões diferentes).
Não consegui encontrar nenhuma solução on-line, mas uma resposta em um tópico semelhante me fez pensar e percebi que provavelmente só precisava reconstruir (ou limpar) o projeto.
No Eclipse, vá para Projeto => Limpar. Selecione seu projeto e o Eclipse pareceu consertá-lo. Para mim, isso resolveu o problema.
Espero que isto ajude.
fonte
Application
classe, o que leva a um erro diferente.Eu encontrei o mesmo problema. O motivo foi que a biblioteca que eu estava tentando usar havia sido compilada com um JDK 7 padrão.
Eu recompilei com as
-source 1.6 -target 1.6
opções e funcionou bem.fonte
A mesma coisa funcionou para mim: Propriedades -> Caminho de compilação Java -> "Ordem e exportação" Curiosamente - por que isso não é feito automaticamente? Eu acho que falta alguma configuração. Também aconteceu comigo após a atualização do SDK.
fonte
Clique com o botão direito do mouse na pasta do projeto, procure Propriedades no caminho de construção Java e selecione os arquivos jar que você vê. Ele tem trabalhado para mim.
fonte
John O'Connor está certo com o problema. O problema permanece com a instalação do ADT 17 e superior. Encontre este link para corrigir o erro:
http://android.foxykeep.com/dev/how-to-fix-the-classdefnotfounderror-with-adt-17
fonte
Tentei de tudo nesta publicação (e em algumas outras publicações) e não funcionou para mim; esta é de longe a mais terrível atualização do ADT que já experimentei e nunca atualizarei sem um backup do ADT em funcionamento.
Consegui resolvê-lo removendo o projeto e adicionando-o novamente usando um backup de origem que eu tinha.
fonte
Eu tive esse mesmo erro com o ADT22. Foi resolvido verificando "Bibliotecas privadas do Android" nas propriedades -> caminho de construção do Java -> Pedido e exportação. Se você estiver usando algum projeto de biblioteca, o mesmo deve ser feito para eles também.
fonte
Todas as respostas existentes não funcionam para mim porque meu caso é um pouco diferente. Levei algumas horas para fazê-lo funcionar. Estou usando o Eclipse.
Meu projeto android inclui outro projeto java 1.6 normal, que precisa de um arquivo jar de terceiros. O truque é:
Espero que isso ajude aqueles que têm cenários semelhantes aos meus.
fonte
às vezes você precisa pegar todo o projeto externo como biblioteca e não apenas o jar:
meu problema foi resolvido adicionando o projeto inteiro (no meu caso, google-play-services_lib) como biblioteca e não apenas o jar. as etapas para isso (da resposta @style ):
fonte
Às vezes, isso acontece devido à não inclusão de jar, do qual você tem dependência, com a tag "uses-libary" no seu AndroidManifest.xml.
Além disso, verifique se ele deve estar dentro da tag "application".
Saudações,
Ravi
fonte
Eu tive esse problema e foi causado por não "exportar" a biblioteca. A questão era justamente porque os arquivos .class de algumas classes não estão disponíveis durante o empacotamento do APK.
No meu caso, eu estava usando a classe "CusrsorAdapter" e, em "JavaBuildPath-> Order and Export", não verifiquei o jar V4 de suporte. Depois que ele é selecionado, o problema desaparece.
Para certificar-se de que você está recebendo o erro noClassDefFound por causa do motivo acima, verifique seu logacat, você verá um erro desconhecido de superclasses no tempo de execução.
fonte
Na verdade, você atingiu o infame problema de limite de 64k, é necessário ativar o multidex.
É assim que se faz. https://developer.android.com/tools/building/multidex.html
fonte
Tentei várias coisas e o motivo do erro no meu caso foi o conflito entre maps.jar e o Google Api no Java Build Path-> Libraries. Então, quando eu removi o maps.jar funcionou bem.
Saudações,
wahib
fonte
verifique se o seu arquivo jar está no diretório libs do seu projeto, se você está usando a versão mais recente do ADT com seu eclipse.
fonte
Eu tenho exatamente o mesmo problema ... Para corrigi-lo, acabei de remover minhas Libs privadas do Android em "caminho de construção" e cliquei em ok ... e quando abri o "caminho de construção" novamente, o eclipse os adicionou por si só novamente, e então funcionou para mim;) ...
fonte
Passei dois dias tentando resolver esse problema depois de atualizar o ADT. finalmente tive a sorte de obter este post aqui:
https://code.google.com/p/android/issues/detail?id=55304
o que me levou na direção certa. ao seguir a solução - lembre-se de substituir a biblioteca de suporte do Android de todos os seus projetos pela mesma versão (remova-a e reinstale-a nos projetos). Espero que isso ajude. Boa sorte
fonte
Se você prefere saber a quais arquivos a solução alternativa está relacionada, veja o que encontrei. Simples, altere o arquivo .classpath para
Substitua o arquivo .classpath em todos os projetos de biblioteca e no projeto principal do Android. O arquivo .classpath está na pasta raiz do projeto eclipse. É claro que não se esqueça de adicionar suas próprias entradas de caminho de classe, caso você tenha alguma (então compare com sua versão atual do .classpath).
Eu acredito que este é o mesmo resultado que percorrer os menus do eclipse que o componavt-user explicado acima (Eclipse / Configurar caminho de compilação / Ordem e exportação).
fonte
A solução aqui funcionou para mim. É uma questão de importar a biblioteca para a pasta libs, modificar o arquivo build.gradle e limpar com gradlew.
fonte
Se você alterar seu pedido e exportar no caminho de criação do projeto, esse erro não ocorrerá. A outra maneira de alcançá-lo é através do .classpath na pasta do projeto.
fonte
Experimente o seguinte: -
Passo 1
Inclua todas as bibliotecas para criar pat no Eclipse (significa tornar todas as bibliotecas referenciadas)
Passo 2
Exclua o arquivo R.java e crie novamente o projeto. Não se preocupe, o R.java será recriado automaticamente.
Calafrio :)
fonte
Pelo que entendi, seu projeto não mostra erros, porque você incluiu o jar. Mas o Jar não será usado quando o seu projeto for "exportado" para o dispositivo. Tente isto
Projeto -> Propriedades
Caminho de Construção Java / Ordem e Exportação
[✔] seu pote
fonte
Isso acontece com muita frequência para mim.
A última vez que aconteceu, me lembro, foi causada pela mudança do Eclipse ADT (edição especial do Google) para o Android Studio e pela volta. Basicamente, tentei todos os métodos que encontrei no stackoverflow que não funcionaram para mim.
Eventualmente, o aplicativo voltou a funcionar (sem mais NoCalssDeffoundError) alternando meu IDE para o Eclipse original (Kepler) com o ADT.
fonte