Eclipse “Erro: Não foi possível encontrar ou carregar a classe principal”

108

Tenho um projeto em eclipse no meu laptop que enviei para Git https://github.com/chrisbramm/LastFM-History-Graph.git

Funciona totalmente no meu laptop e é executado / compilado sem problemas, mas no meu desktop não Eclipse dá o erro

Erro: não foi possível encontrar ou carregar a classe principal lastfmhistoryguis.InputPanel

Tentei construir o projeto de:

Project>Build Project

Mas nada aconteceu. Eu defini as PATHvariáveis ​​neste computador para JRE6, JRE7 e JDK 1.7.0 , embora elas não estejam definidas no meu laptop.

Eu tinha o arquivo Jar ( last.fm-bindings-0.1.1.jar ) que estava em meu .classpatharquivo que estava na pasta C: \ Users \ Chris \ Downloads no meu laptop, portanto, não foi incluído na árvore git que eu trouxe recentemente para a pasta do projeto e cometeu, mas não tenho certeza se fiz isso direito. Isso também estaria causando um problema, mas não há um argumento principal aqui.

Não consigo descobrir agora o que preciso verificar / alterar.

Chris
fonte
24
Você tentou Projeto> Limpar e Projeto> Construir Projeto?
javaCity
3
Várias vezes e parece não ter funcionado
Chris
o caminho de classe ambiental do sistema inclui. Onde mais eu preciso mudar e o que especificamente eu faria?
Chris
No meu caso, eu estava correndo java .\bin\selenium-server-standalone-3.9.1.jarquando deveriajava -jar .\bin\selenium-server-standalone-3.9.1.jar
Coty Embry

Respostas:

40

Em seu classpath, você está usando um caminho absoluto, mas moveu o projeto para uma nova máquina com possivelmente uma estrutura de arquivo diferente.

Portanto, em seu classpath você deve (e provavelmente em geral se for empacotar JARS com seu projeto), usar o caminho relativo:

Em sua mudança .classpath

<classpathentry kind="lib" path="C:/Users/Chris/Downloads/last.fm-bindings-0.1.1.jar" sourcepath=""/><classpathentry kind="lib" path="C:/Users/Chris/Downloads/last.fm-bindings-0.1.1.jar" sourcepath=""/>

para

<classpathentry kind="lib" path="last.fm-bindings-0.1.1.jar"/>
poulter7
fonte
19
Como alguém mudaria isso?
Aequitas
Não tenho potes externos, mas estou enfrentando problemas semelhantes. stackoverflow.com/questions/49738153/…
Jesse
@Aequitas do "Executar" -> "Executar como" -> "Aplicativo Java". uma vez, e definirá o caminho da classe automaticamente. Veja a resposta de Blamkin86. As configurações do Classpath podem ser encontradas em "Executar" -> "Executar configurações ...".
gkubed em
72

Se você criar uma classe java com public static void main(String[] args), o Eclipse executará esse método principal para você clicando com o botão direito do mouse no próprio arquivo ou no arquivo no explorador de projetos e escolhendo:

"Executar como" -> "Aplicativo Java".

Depois de fazer isso, o Eclipse armazena informações sobre sua classe, para que você possa executar facilmente a classe novamente a partir do menu Executar como (Botão Play verde na barra de ferramentas) ou da caixa de diálogo Configurações de execução.

Se você posteriormente MOVER a classe java (manualmente, ou entretanto), escolha novamente

"Executar como" -> "Aplicativo Java",

a partir do novo local, o Eclipse executará a configuração original armazenada, tentará chamar esta classe de seu local original, o que causa este erro.


SOLUÇÃO:
Para mim, a correção foi ir para as configurações de execução, (Botão Play verde -> Configurações de execução) e remover todas as referências à classe. Da próxima vez que você correr

"Executar como" -> "Aplicativo Java"

O Eclipse escreverá uma nova configuração para a classe movida e o erro desaparecerá.

Blamkin86
fonte
2
Obrigado..!! Este funcionou para mim. O problema começou quando mudei o nome do projeto.
NixRam
+1 public static void main(String[] args)é o que me pegou. Eu acidentalmente tive a assinatura errada (em Mainvez de main). Portanto, é importante verificar se a assinatura está correta. :)
Nicholas Miller
10
Como podemos "remover todas as referências à classe"?
aCarella
2
Funcionou como um encanto. Meu problema é que criei um build.gradle e settings.gradle que estavam alterando os nomes padrão que estavam associados ao projeto. Removendo as referências (executar como -> executar configurações -> remover todas as configurações associadas ao projeto)
randombee
1
"remover todas as referências à classe" - devo remover todas as configurações de execução?
jcool
55

tl; dr : Limpe todo o caminho de construção e tudo o que você já adicionou manualmente. Isso inclui fontes adicionais, projetos, bibliotecas.

  • Projeto -> Limpar
  • Certifique-se de que Projeto -> Compilar automaticamente está ativo
  • Projeto -> Propriedades -> Caminho de construção Java -> Bibliotecas: Remova quaisquer bibliotecas externas que você já tenha adicionado . Não remova bibliotecas padrão como a Biblioteca do sistema JRE.
  • Tente dar sua aula principal agora. O erro "classe não pôde ser encontrada / carregar" deve ter desaparecido. Tente adicionar seus libs / jars externos um após o outro.

Motivo por trás disso: o compilador teve problemas ao vincular as bibliotecas ao projeto. Ele falhou e produziu uma mensagem de erro errada.

No meu caso, deveria ser algo como "Não foi possível adicionar AutoHotkey.dll ao caminho de construção", porque foi isso que fez o compilador falhar.


Se isso ainda não funcionar, dê uma olhada no ErrorLog integrado do Eclipse :

Janela -> Mostrar Visualização -> Geral -> Registro de Erros

phil294
fonte
26

Eu fiz todas as coisas mencionadas acima, mas nenhuma delas funcionou para mim

Meu problema foi resolvido da seguinte maneira:

  1. Clique com o botão direito em seu Projeto> Propriedades> JavaBuildPath> Bibliotecas .
  2. Remova o arquivo jar, tendo uma bandeira vermelha nele.
  3. Se o problema persistir, tente a solução abaixo. Isso funcionou para mim quando enfrentei este problema pela segunda vez:
    1. Clique com o botão direito do mouse em Projeto> Propriedades> Caminho de construção Java> Bibliotecas
    2. Remover biblioteca
    3. Adicionar biblioteca. (Escolha a Biblioteca do Sistema JRE)
Atul Chavan
fonte
funcionou para mim! Eu também tinha um ponto de exclamação próximo ao nome da minha pasta de projeto. Isso também corrigiu isso
benzabill de
Funcionou para mim! Obrigado
Dhruv Kaushal
1
isso funcionou simplesmente removendo e readicionando a mesma biblioteca java JRE
Andrew Norman
Isso funcionou para mim, embora não houvesse nenhum aviso ou ponto de exclamação
Michał Leon
Mano, você literalmente salvou meu Projeto Java AP, você não tem ideia, muito obrigado
Rohan Singh
18

Enfrentei um problema semelhante em meu projeto de webapp maven depois de passar quase uma hora, encontrei uma solução que funcionou para mim. Digitei o seguinte comando maven e funcionou

mvn clean install -U
Eu não sei a razão exata por trás disso.

rajeev pani ..
fonte
1
A mesma coisa para mim - também não sei por que isso aconteceu em primeiro lugar.
nsof
Em eclipse, clique com o botão direito do mouse Run As..Maven cleane Run As..Maven installfez isso por mim. O problema começou quando mudei um projeto eclipse java para se tornar um projeto eclipse maven. 1 para apontar na direção certa.
CodeMed
-U, - update-snapshots Força uma verificação de versões ausentes e instantâneos atualizados em repositórios remotos
Kanagavelu Sugumar
9

Estou assumindo que você importou o projeto para a instalação do Eclipse do seu desktop. Se for esse o caso, você deve apenas selecionar Projeto> Limpar. Em seguida, reconstrua seu projeto. Caiu como uma luva para mim.

Cris CodeCruncher
fonte
9

Eu tive o mesmo problema e resolvi usando:

Eclipse Mars
Egit
Github
Maven Project

O problema é que disponibilizei meu projeto maven para o github. Ele moveu meu projeto para minha pasta github.

Solução:

  • Fechar Eclipse
  • Exclua a pasta de metadados de seu espaço de trabalho
  • Reinicie o Eclipse

A tela inicial será exibida.

  • Feche a tela inicial
  • Clique com o botão direito no explorador de pacotes
  • Escolha "import maven project",
  • Navegue até sua pasta github e importe o projeto maven.

Depois disso, meu projeto foi compilado com sucesso.

Matthis Kohli
fonte
7

Verifique se o seu projeto tem um construtor:

  • verifique as propriedades do projeto (no "explorador de pacotes", clique com o botão direito do mouse no projeto, selecione "propriedades"), a segunda seção é "Construtores", e deve conter o "Java Builder" padrão
  • ou procure no arquivo ".project" (em ... / workspace / yourProjectName / .project) a seção "buildSpec" não deve estar vazia.

Deve haver outras maneiras, mas o que eu fiz foi:

  • desligue o eclipse
  • edite o arquivo. "projeto" para adicionar a seção "buildSpec"
  • reinicie o eclipse

Um arquivo java ".project" mínimo adequado deve ser semelhante a:

<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
        <name>myProjectName</name>
        <comment></comment>
        <projects>
        </projects>
        <buildSpec>
                <buildCommand>
                        <name>org.eclipse.jdt.core.javabuilder</name>
                        <arguments>
                        </arguments>
                </buildCommand>
        </buildSpec>
        <natures>       
                    <nature>org.eclipse.jdt.core.javanature</nature>
        </natures>      
</projectDescription>
loic.jaouen
fonte
1
Isso consertou para mim. Você não precisa desligar o Eclipse para alterar o .projectarquivo, você pode simplesmente fechar o projeto.
Luís de Sousa
Eu, por outro lado, apenas fechei o Eclipse (mas não editei o .projectarquivo. Liguei o Eclipse novamente e funcionou: o erro foi embora.
Shahar
6

Bem, o seguinte funcionou para mim ...

  1. Foi para a pasta do projeto (dentro workspace)
  2. Em seguida, excluiu a binpasta
  3. Em seguida, projeto / projetos limpos (no Eclipse)
  4. construído / executado a partir do Eclipse.
DeeCode
fonte
Bem-vindo ao SO, DeeCod. Excluir a pasta bin e fazer um "projeto> limpar" e construir já foi sugerido em outras respostas. Em vez de postar um "eu também" como resposta, recomendo obter reputação suficiente (você só precisa de 50) para postar comentários e confirmar que uma abordagem específica funcionou para você em um comentário.
Amos M. Carpenter
1
Obrigado Amos! De qualquer forma, sinto muito se estou errado, pelo que vejo -> Excluir a lixeira antes de limpar / reconstruir não é sugerido em outras respostas neste tópico ... Just Clean> build não funcionou no meu cenário ... enquanto isso ajuda alguém :)
DeeCode
Não se preocupe - já me deparei com muitos desses cenários em que tentar combinações de coisas estranhas funciona de repente sem motivo aparente. ;-)
Amos M. Carpenter
4

Algo parecido aconteceu comigo algumas vezes, a única maneira que eu conhecia de consertar isso era removendo a pasta de metadados. Felizmente, encontrei outra maneira.

Tente acessar propriedades do projeto > Caminho de construção Java> guia Pedido e exportação> selecione tudo (ou tente brincar com as caixas de seleção lá).

Isso deve causar a reconstrução completa do projeto e o Eclipse ver a classe principal.

Adição: notei que esse bug ocorre quando você tem muitos projetos em um espaço de trabalho e alguns deles estão configurados incorretamente (aparece um ponto de exclamação vermelho). Corrigir o caminho de construção do projeto e outras configurações (mesmo se este projeto não estiver relacionado àquele com o qual você tem problemas) deve corrigir um problema.

Dmitry Avgustis
fonte
4

Meu problema Main classnão foi encontrado ou carregado é causado por um motivo interessante.

Em nosso projeto, estamos usando Mavencomo ferramenta de construção e minha main class extendsclasse a, que está no class pathmas seu escopo eratest , enquanto o main classnão está no pacote de teste.

Se sua classe principal for extendsuma classe, primeiro tente executá-la main classremovendo extendsparte. Se funcionar, você pelo menos entenderá que o problema não é por causa run configurationou eclipsemas da classe, seu main class extends.

Ao infinito
fonte
4

Para mim, o motivo pelo qual esse erro começou a aparecer foi porque o classpath ultrapassou o limite do Windows. Então descobri a opção "Usar JAR temporário para especificar o caminho de classe (para evitar limitações de comprimento do caminho de classe)". Selecionar essa opção resolveu o problema para mim. A opção reside em Run / Debug Configuration, guia Classpath, veja a imagem abaixo.

insira a descrição da imagem aqui

xbranko
fonte
3

Esse problema também é causado quando você tem caracteres especiais no caminho da área de trabalho. Eu tinha meu espaço de trabalho na minha pasta pessoal e seu nome era em grego, então não funcionou. Mudei meu espaço de trabalho, agora contém apenas caracteres em inglês em seu caminho, e agora o projeto é construído sem problemas.

Stavros Stefanakakis
fonte
3

Se você estiver usando o Eclipse, as etapas a seguir resolverão seu problema:

Vá para Executar -> Configurações de execução -> Pesquisa de classe principal -> Localize sua classe manualmente -> Aplicar -> Executar


fonte
3

Eu tive esse erro. Foi porque eu tinha em static void main(String[] args)
vez de public static void main(String[] args)

Passei quase uma hora tentando descobrir isso.

Nota: a única diferença é que eu não declarei mainserpublic

Alex Spencer
fonte
3

Se seu código for bom e você souber que está tendo um problema com o Eclipse, isso o resolverá.

Você poderia simplesmente deletar $ yourproject / .classpath, $ yourproject / .project e $ yourworkspace / .metadata. Alguém mencionou essa opção. Isso vai explodir todo o seu espaço de trabalho. Em vez de:

  1. Exclua .classpath e .project de seu projeto
  2. Exclua seu projeto no eclipse. NÃO marque a exclusão do conteúdo do projeto no disco.
  3. Agora, em um explorador de arquivos, vá para $ yourworkspace / .metadata.
  4. Pesquise por $ yourprojectname
  5. Exclua tudo o que encontrar. Deve ser seguro excluir qualquer coisa no diretório .metadata.
  6. No eclipse: Arquivo> Importar> Geral> Projetos da pasta ou arquivo> $ yourproject> terminar
  7. Clique com o botão direito em seu projeto> propriedades> Caminho de construção Java> guia Código-fonte
  8. Selecione todas as pastas de origem, remova.
  9. Adicione a pasta, selecione src (seja qual for o nome da sua pasta src) e adicione-a
  10. Vá para a guia Bibliotecas
  11. Adicione quaisquer jars ao seu caminho de construção aqui. Não deve haver mais erros em seu projeto agora.
  12. Execute seu projeto como faria normalmente.
Brent Sandstrom
fonte
Eu sobrescrevi o .classpathe o .projectarquivo com arquivos de outro projeto, e funcionou ... isso é uma coincidência ou o caminho de classe é realmente o que importa?
Amarth Gûl
Provavelmente uma coincidência já que esses arquivos são específicos para o seu projeto. Você pode, sem saber, ter feito o eclipse regenerar esses arquivos, introduzindo erros. Abra o arquivo e leia-o para ter uma ideia do que eles fazem. Classpath contém diretórios de pastas libs e src e .project armazena plug-ins e coisas de faceta de projeto
Brent Sandstrom
3

isso poderia causar bibliotecas jdk se você tivesse importado para jre

isso aconteceu comigo, então verifique os jars instalados

no eclipse, clique em Windows> Preferências> Java> Jres Instalado> clique em Jre e edite depois de olhar para a lista de jar, certifique-se de que nenhum é jdk ou corrompido, insira a descrição da imagem aqui

user889030
fonte
2

Tive o mesmo problema, mas no meu caso foi causado pela falta da pasta de origem (vazia) (ela existe no projeto original, mas não no repositório GIT porque está vazia).

Depois de criar a pasta ausente, tudo funciona.

nothrem
fonte
2

Também recebi esse erro, logo após mover alguns recursos. Verificando o log de erros, vi que o Eclipse não conseguiu fazer uma compilação, pois não conseguiu remover um arquivo / pasta. Tente remover manualmente a pasta "bin" (ou o que quer que seja chamado para você).

Isso funcionou para mim, pelo menos.

Zar
fonte
Sim. depois de mover o projeto para o git. O problema ocorre. Eu tento fazer isso e também preciso "fechar projeto" e "abrir projeto" para fazer o truque.
Yeung
2

Encontrei esse erro hoje porque configurei um programa hello world e, em seguida, recortei e colei um novo programa no mesmo arquivo. Para resolver o problema de não encontrar hello world como a última foi chamada, cliquei em Executar-> Executar Configurações e, em seguida, em Classe Principal, cliquei em pesquisar e ela encontrou meu novo nome de classe e substituí-o pelo novo nome correto no texto que colei . Este é um problema de novato que eu conheço, mas também é fácil de resolver. Espero que isso ajude alguém! Douglas

Douglas E Knapp
fonte
2

Tive o mesmo problema com o arquivo .classpath correto e logo descobri que na verdade não é o arquivo .classpath contado (depois de corrigir esse problema, substituo o arquivo .classpath viável pelo original, o projeto ainda funcionou, o que significa que. arquivo classpath não era o caso)

Como é um projeto Maven, tudo o que fiz foi:

  1. Eclipse mvn: limpo
  2. deletar projeto eclipse
  3. importar o projeto
  4. feito

espero que ajude!

karl li
fonte
2

Geralmente isso acontece porque o Eclipse limpa os .classarquivos, mas não os construa novamente. Verifique a binpasta, ela deve estar vazia. Então você deve verificar se há algo mais que esteja causando a falha de build. Você pode ter adicionado alguns jars no caminho de classe, que o Eclipse pode não ser capaz de localizar.

user3687451
fonte
2

Basta acessar o Package Explorer e pressionar F5 ou, para alguns laptops, fn + F5. O motivo é que o eclipse pensa que os arquivos estão em algum lugar, mas na verdade os arquivos estão em outro lugar. Ao atualizá-lo, você coloca os dois na mesma página. Não se preocupe, você não perderá nada, mas se quiser ser extremamente cuidadoso, basta fazer backup dos arquivos da pasta de projetos java em algum lugar seguro.

Steve Lam
fonte
Isso funcionou para mim. Eu encontrei o problema após atualizar para uma versão mais recente do Eclipse. É um projeto gradle, e o gradle clean eclipse não resolveu o problema. Uma atualização simples fez.
dnuttle
2

Estas são as etapas simples, que me ajudaram a resolver esse problema.

  1. Feche o eclipse
  2. Exclua a pasta ".metadata" em seu espaço de trabalho. (pode ser uma pasta oculta)
  3. Abra o eclipse (ele criará automaticamente a pasta ".metadata" em seu espaço de trabalho)
  4. Tente executar o programa.
Soham Darji
fonte
Isso desvinculará meu projeto do espaço de trabalho. Você terá que importar todos os seus projetos novamente!
Muhammad Gelbana
Eu concordo com @MuhammadGelbana, apaguei o .metadata e ele explodiu meu espaço de trabalho. Tenha muito cuidado ao tentar esta solução.
TYMG
2

Para resolver esse erro, execute as seguintes etapas:

Etapa 1: Abra o arquivo .project .

Etapa 2: verifique duas tags ...

    a) <buildSpec>

    b) <natures>

Etapa 3: Se as tags mencionadas acima não incluírem nenhum conteúdo, certamente o erro acima ocorrerá.

Etapa 4: adicione o seguinte conteúdo a cada tag para resolver o erro acima.

Para <buildSpec>:

<buildSpec>
    <buildCommand>
        <name>org.eclipse.jdt.core.javabuilder</name>
        <arguments>
        </arguments>
    </buildCommand>
</buildSpec>

Para <natures>:

<natures>
    <nature>org.eclipse.jdt.core.javanature</nature>
</natures>

Etapa 5: Salve o arquivo pressionando ctrl + s.

Passo 6: Para o lado seguro, feche o projeto uma vez e reabra-o.

Etapa 7: é isso. Você está pronto para arrasar !!!

Mencione nos comentários se a solução foi útil.

Obrigado.

Nishat Lakhani
fonte
2

Verifique o log de erros do espaço de trabalho (Windows-> Mostrar Visualização -> Log de Erros). Se você vir que algum jar importado está corrompido, remova a pasta de repositório correspondente e importe novamente.

Raman
fonte
2

2 tipos de soluções existem para o mesmo.

(1) Vá para executar configurações: - executar-> executar configurações na guia Classpath:

Selecione Advanced Add onde o Eclipse geralmente coloca o * .class para os projetos, que está no bin. Então, adicionei o diretório bin para o projeto.

(2) Se a primeira solução não está funcionando, significa que o jar que você está apontando para o seu projeto está seguindo o caminho do seu repositório Maven local, que não está sendo atualizado para o seu projeto, então é melhor verificar o jar desse repositório maven local e copie-o, cole-o em um novo projeto simplesmente ou apenas baixe-o de qualquer site e configure-o em seu caminho de construção.

Espero que ajude.

navis1692
fonte
1

Eu tive o mesmo problema. Passei algumas horas e finalmente mudei meu espaço de trabalho de volta para a pasta local e tudo funciona agora. Talvez economize algum tempo para os outros. Jon

user1362446
fonte
1

Eu só tive esse problema depois de primeiro ter o problema do Windows 8 se recusar a atualizar meu caminho, não importa como eu configurei JAVA_HOME para - java -version relatou o último JDK em vez daquele que eu armazenei em JAVA_HOME. Eu finalmente consegui fazer isso funcionar colocando '% JAVA_HOME% / bin;' na frente da variável de ambiente do caminho em vez de no final. Então lancei o Eclipse e de repente ele não conseguia encontrar minha classe principal, quando funcionava bem antes disso. O que fiz para consertar foi acessar as propriedades do projeto, remover a biblioteca JRE existente da guia de bibliotecas, adicionar um novo JRE selecionando o botão "Adicionar biblioteca" e seguir as instruções para instalar o JRE 7 como meu JRE padrão. Agora tudo voltou a funcionar.

Howard Roark
fonte
1

Encontrei outra solução no meu caso este problema: a Eclipse->Preferences->Java->Installed JREseguir carreguei no botão Pesquisar. Selecione a pasta no Linux /usre o Eclipse encontrou todos os JVMs.

Selecione outro JVM muito atual . Está resolvido para o meu caso.

Karol Preiskorn
fonte