Erro: não foi possível localizar ou carregar a classe principal no intelliJ IDE


151

Sou iniciante em Java e estou tentando executar meu código usando o IntelliJ que acabei de instalar como meu IDE com o JDK 1.7. O seguinte pedaço de código mantém nem compila e continua me dando o erro:

Error: Could not find or load main class libTest

Código

import java.lang.Integer;
import java.lang.String;
import java.lang.System;
import java.util.*;

class book {

    private String name = "trial";
    private int bookCode=1;
    private int issued=0;

     public void Issue(){
         if(issued==0) {
             issued=1;
             System.out.println("You have succesfully issued the book");
         }
         else {
             System.out.println("The book is already issued. Please contact the librarian for further details");
         }
    }

    public int checkCode() {
        return bookCode;
    }

    String readName() {
        return name;
    }

    public void setName(String newName){
        name=newName;
    }

    public void setBookCode(int newCode){
        bookCode=newCode;
    }
}

class library {
    private ArrayList books=new ArrayList();

    public void getList(){
        for(int bk:books){
            String bName=books(bk).readName();
            System.out.println((bk+1)+")  "+bName);
        }
    }
}

public class libTest{
    public static void main(String[] args){
        library newLib= new library();
        System.out.println("code working");
   }
}

Existe alguma alteração que eu precise fazer nas configurações do compilador? Ou é o código.


2
Qual é o nome do arquivo de origem? É isso libTest.java?
QuantumMechanic

import java.lang...Isso acontece automaticamente para as classes no langpacote.
Andrew Thompson

Conforme mencionado pelo QuantumMechanic, sua classe principal precisa estar em um arquivo chamado exatamente como ele. Portanto, o libTest precisa estar em um arquivo java chamado libTest.java, caso contrário, o compilador java se queixará. Além disso, você criou a fonte através do IDEA ou criou um novo projeto do IDEA sobre a fonte existente?
Mcfinnigan

tentou java.lang importação não fez diferença
Confuso Mailman

eles são idênticos. Existe alguma outra razão pela qual esse erro deve ser sinalizado?
Mailman confuso

Respostas:


177

Isso pode ajudar:

1) Menu "Build" -> " Rebuild Project". Às vezes, o Intellij não reescreve as classes porque elas já existem, assim você solicita que o Intellij reescreva tudo.

2) Menu "Executar" -> " Edit configuration" -> exclua o perfil -> adicione novamente o perfil ("Aplicativo" se for um aplicativo Java), escolha sua classe principal no menu suspenso "Classe principal".

3) Menu "Build" -> " Rebuild Project".


9
Eu tinha um projeto novo no IntelliJ e ele não funcionava. Rebuild Projecttrabalhou para mim!
Danny Harding

Segunda opção funcionou para mim. Mas exclua o perfil de configuração e clique com o botão direito do mouse em sua classe -> run
NoName

2
"Build" menu -> "Rebuild Project- fez o trabalho! Obrigado
Yan Khonski

1
A primeira opção rebuild projectfuncionou para o meu problema. Obrigado!
Khwilo 9/08/19

1
Removai o .idea, .mvn e outros diretórios de destino e reiniciei o IntelliJ. Foi ao log de eventos, adicionou o projeto como um projeto Maven e seguiu as etapas mencionadas por @Kishore aqui. Está funcionando agora.
Ensolarado Shekhar

105

Se nenhuma das respostas acima funcionou para você, feche seu intelliJ IDE e remova o arquivo e a pasta intelliJ IDE da raiz do projeto:

rm -rf .idea *.iml 

Em seguida, abra o projeto com intelliJ. Deve funcionar agora.


1
Isso funcionou para mim. Eu também re-importado meu projeto em IntelliJ, mas para a opção "Grupo Modules", eu usei "usando nomes qualificados" (em vez de "utilizando grupos de módulos explícito".
markhops

3
Excluindo a .ideapasta sempre resolve todos os problemas com IDEs JetBrains :)
shelll

isso funcionou para mim também, sou um grande fã do Intellij, mas eles devem aprender a fazer coisas simples também.
Zwakele Mgabhi 25/02

Desperdiçado 30+ minutos. finalmente, é isso que eu tinha que fazer para que as coisas funcionassem
vins

Somente este método nesta página funciona para mim.
zionpi 16/06

81

Para mim, a solução foi corrigir o diretório de saída nas configurações do projeto. Antes eu estava usando apenas "target" para a saída do compilador do Project. Em vez disso, atualizei-o para ter um caminho completo, por exemplo, D: \ dev \ sigplusjava2_68 \ target insira a descrição da imagem aqui


10
que não me ajudou
Pavel

É possível que minha solução aqui seja realmente uma variação sutil da resposta de @ Ehsan abaixo. Talvez, ao especificar o diretório de destino, ele obtenha um novo local para compilar todos os objetos que executam essencialmente o mesmo trabalho que um Rebuild Project.
Tio Iroh

1
@UncleIroh Se ele fez o mesmo trabalho, reconstruindo + lendo a configuração. teria corrigido o problema inicialmente. Não foi, mas sua solução foi.
Hyperum 23/10/19

Essa deve ser a resposta aceita. Sempre me incomodando novamente ..: p
Christopher Stock

37

Eu tive esse problema e tentei de tudo sob o sol que eu conseguia pensar e neste site.

Nenhuma das minhas aulas de Java estava sendo escolhida depois que eu saí de uma ramificação remota. Todas as classes tinham Js vermelhos por seus nomes na Hierarquia do Projeto, não Cs azuis.

No final, tentei seguir este tutorial e algumas etapas tentaram algo não descrito e resolvi o problema: https://www.jetbrains.com/help/idea/creating-and-managing-modules.html

Aqui está o que eu fiz:

  1. Saltar arquivo | Estrutura do projeto ou pressione Crtl + Shift + Alt + S
  2. Selecione Módulos na seção Configurações do Projeto.
  3. Na guia Fontes, clique em Fontes na linha 'Marcar como:'.
  4. Clique no botão Aplicar.

Por alguma razão, todas as minhas aulas tinham C azuis.

Alguém com uma melhor compreensão de como o IntelliJ e / ou o IDE podem explicar o fenômeno, mas tudo que sei agora é que ele pode ver todas as classes e, mais importante, a principal, e executar.


Isso só funcionou para mim depois que fechei o Intellij, removi a pasta .idea e reabri o Intellij e siga as etapas acima.
Shell_Leko

14

Criar explicitamente uma outpasta e, em seguida, definir o caminho de saída comoC:\Users\USERNAME\IdeaProjects\PROJECTNAME\out

COMO ISSO

parecia funcionar para mim quando apenas out, e esperar que o IntelliJ fizesse a pasta não funcionaria.


Tente também fazer com que o IntelliJ faça uma nova configuração de execução:

Encontre o anterior clicando em

! [Editar configurações

depois remova

insira a descrição da imagem aqui

e aperte ok.

Agora, (PASSO IMPORTANTE) abra a classe que contém seu método principal. Provavelmente, isso é mais fácil, clicando no nome da classe no Painel de Projetos do lado esquerdo.

Dê a Alt+ Shift+ F10e você deve obter uma

ISTO

Agora bata Enter!!

Surpresa?? (Funcionou?)


A configuração da execução funciona, especialmente se você moveu a main()função de class Mainpara outra classe. Nesse caso, edite a configuração de execução como mostrado acima e altere o valor de 'Main class' para o nome da sua classe (totalmente qualificado).
forumulator

Eu só tenho opção "Editar configuração", não trabalho para mim (
Ver Nick

14

Invalide o cache e reinicie seu intellij, funcionou para mim. Vá para Arquivo como mostra a figura em anexo


7

Eu sei que isso foi perguntado há um tempo atrás, mas eu estava apenas tropeçando nesse problema e achei que minhas descobertas poderiam ajudar outras pessoas. Conforme apontado, a mensagem de erro é basicamente o resultado da pasta out. Isso ocorre porque, quando você está tentando executar o programa, ele compila o código primeiro e coloca o resultado compilado no local de saída e, em seguida, tenta carregar o código compilado no local de saída. Se o código compilado não estiver no local esperado, você receberá o erro.

O ponto que estou particularmente querendo compartilhar é que, algumas vezes, o código não é compilado (criado), mesmo que sua configuração de execução especifique "Build" na seção "Antes de iniciar" do painel de configuração.

Quando isso pode acontecer? Uma situação que pode causar isso é se você estiver usando módulos e excluir manualmente o diretório de saída do módulo. Por exemplo, se eu tiver um módulo chamado "foo", deve haver um diretório chamado foo em out / production. Se você o excluir manualmente, o sistema de compilação talvez não saiba que precisa ser reconstruído.

Pior ainda, se você selecionar Construir | Construa o módulo 'foo', ainda não é possível reconstruir o módulo. Se for esse o caso, você deve selecionar um arquivo no módulo, por exemplo 'bar.java' e, em seguida, selecionar Build | Recompile 'bar.java'. Agora o diretório out out / production / foo deve ser restaurado.

Como o IntelliJ normalmente sabe de todas as mudanças acontecendo, isso me surpreendeu e levou um tempo para descobrir, então pensei em compartilhar.


6

Verifique seu módulo de classe : Encontrei este problema com intellij: Eu tenho um projeto de multi-módulo maven, o problema é que eu estou executando uma classe que não existe no módulo dentro da configuração, portanto, meu problema é corrigido definindo o módulo correto ( "editar configuração" -> "usar classe de módulo")

isso pode ajudá-lo


Trabalhou para mim também. Obrigado! Provavelmente havia algo errado ao instalar uma atualização do IntelliJ ou do plugin Scala. Depois, você recebe esse problema estranho. Muito chato e demorado. Espero que o JetBrains encontre uma resolução.
André van Delft

6

Eu tive que marcar a pasta "src" como "Fontes". Após reiniciar o IntelliJ e reconstruir o projeto, eu poderia executá-lo sem mais problemas (veja a captura de tela ). Editar: Você pode acessar a guia "Estrutura do projeto" em Arquivo-> Estrutura do projeto ou pressionando Ctrl + Shift + Alt + S.


1
Se você (como eu) não tiver uma guia 'fontes', adicione um novo módulo (clique no verde +) e selecione sua pasta principal como fonte. Nada será substituído e a pasta src ficará azul.
john ktejik

5

Abra a guia Módulos (pressione Ctrl + Shift + Alt + S). Eu tinha dois módulos em um projeto. Resolvi o problema depois de remover o segundo módulo redundante (veja a captura de tela).insira a descrição da imagem aqui


4

Eu enfrentei esses problemas quando a classe está na pasta padrão, ou seja, quando a classe não declara um pacote.

Então, acho que usar uma instrução de pacote (por exemplo package org.me.mypackage;) no topo da classe deve corrigi-la.


posso replicar essa linha de código ?? .. como modificá-la no caso de eu precisar?
Mailman confuso

Basta usar um nome de pacote de seu próprio país, como este:package org.confused.mailman;
Hakan Serce

Bem, a instrução do pacote deve corresponder onde o IDE colocou o arquivo. Se o IDE não colocou o arquivo no sourceBase / org/confused/mailman, a adição dessa linha de pacote não ajudará.
QuantumMechanic

Eu acho que o IDE irá guiar isso e corrigir isso automaticamente, se a correção recomendada for selecionada.
Hakan Serce

não ajudar: / .. o IDE não parecem ser incomodado com qualquer uma das alterações i make..it lança o erro acima e senta-se costas e relaxa
Confuso Mailman

3

Arquivo> Estrutura do projeto> Módulos> Marque a pasta "src" como fontes. Isto deve resolver o problema. Verifique também se o idioma mais recente está selecionado para que você não precise alterar o código ou fazer alterações na configuração. insira a descrição da imagem aqui


2

No meu caso, o problema parecia estar relacionado à atualização do IntelliJ. Quando fiz isso, substitui os arquivos do antigo IntelliJ pelos da nova IntelliJ (comunidade de 2017 a comunidade de 2018). Depois disso, todos os meus projetos foram interrompidos. Eu tentei de tudo neste segmento e nenhum deles funcionou. Tentei atualizar o gradle para a versão mais recente (4 a 4.8) e isso não funcionou. A única coisa que funcionou para mim foi excluir toda a pasta IntelliJ e reinstalá-la. Todos os meus projetos funcionaram depois disso.


Parece que isso é verdade. Eu uso o intellij portátil, então renomeei a pasta principal como de idea\binto be idea_old\bine renomeei a pasta de configurações na %user%\usernamequal .IntelliJIdea2018.2será .IntelliJIdea2018.2_oldre-extraído o arquivo zip intellij para começar a usá-lo como nova versão portátil (Esta é a versão 2018.2.1) com o Spring O aplicativo de inicialização de vários módulos separados (não vinculado no pom.xml de pai solteiro) cada um é um aplicativo de inicialização com seu próprio pom.xml e pronto !!! Todos os trabalhos, pasta de destino criada, compilando antes de executar o painel de inicialização da primavera.
Anddo 18/08/18

2

Marque o diretório como um diretório de origem. Aberto via Ctrl + Shift + Alt + S

insira a descrição da imagem aqui


1

Para mim - eu tentei algumas das opções acima, não funcionou. Então, acabei de renomear minha classe Application e isso provavelmente forçou o intelliJ a criar um jar novo e a mensagem de erro começou a mudar. Então eu o renomeei e funcionou.


1

Eu tentei todos os hacks sugeridos aqui - sem sucesso. No final, simplesmente criei um novo aplicativo Maven e copiei manualmente - um por um - os arquivos e recursos pom.xml e java. Tudo funciona agora. Eu sou novo no IntelliJ e totalmente impressionado, mas como é fácil colocá-lo em um estado instável.


Você precisa fechar intellij, excluir a pasta .idea (provavelmente um arquivo oculto); depois abra a pasta novamente em intellij - ele reinicializará o projeto intelli com base na configuração maven / grade.
21419 Jeremy

1

insira a descrição da imagem aqui

modules.xml com conteúdo incorreto, não sei o que há com minha IDEA.


1

Eu herdei vários arquivos .JAVA de outros lugares e não consegui descobrir como fazê-los funcionar em qualquer IDE. Por fim, tive que ir para a linha de comando onde estava o arquivo Main.JAVA e executar javac Main.java. Isso criou um monte de arquivos .CLASS. Os IDE puderam descobrir o que fazer.


1

Eu recebi esse erro ao usar o Scala / SBT . O IntelliJ não conseguiu encontrar a classe principal, mesmo que tudo estivesse configurado corretamente. Minha solução: exclua a <user>/.sbt/<version>/plugins/targetpasta e reinicie o IntelliJ.


1

Estou usando o IntelliJ com Spring e minha classe principal está envolvida em um JAR. Eu tive que marcar o 'Incluir dependências com escopo "Fornecido"' na caixa de diálogo de configuração Executar / Depurar


1

Estamos na estrutura de arquivos / projetos. A resposta pode ser:

A pasta indicada como "raiz do conteúdo" precisa de uma pasta filha onde está o código. Além disso, encontre o botão que marca o código como excluído e não. Não deve ser confundido com a caixa de seleção que declara excluídos sem informar em que fase e o que ** O compilador exclui ou o tempo de execução exclui? Você está fadado ao teste e ao sorteio. Portanto, não há essa caixa de seleção, mas ícones e cores.

Como uma idéia, precisamos entender como ele foi originalmente pensado para funcionar. Eles nunca conseguiram que funcionasse em primeiro lugar e começaram a adicionar coisas no estilo prematuro de codaculação. Faz tantos anos e você não pode esperar nenhuma melhoria. Mas como cura, podemos descobrir uma maneira de acertar sempre.


1

Outra coisa que você pode verificar aqui é o comando real que está sendo passado para a JVM e verifique se está OK. Role até o topo do seu console Executar, que deve ser a primeira linha.

Os espaços no campo Opções de VM da Configuração da Execução irão malformar o comando de inicialização do aplicativo e podem resultar nessa mensagem de erro

-DsomeArgument="arg with space must be quoted"

Obrigado ! Isso funcionou para mim !!
Jcoder 18/06

0

Elaborando a solução de Brad Turek ... Um dos modelos de projeto Java IntelliJ padrão espera um arquivo chamado Main definindo o ponto de entrada do método Main e main () da classe . Se o método estiver contido em outro arquivo (e classe), altere a configuração Executar :

Janela Executar configuração

  1. Com o projeto aberto no IntelliJ, use o menu Executar: Editar configurações ... para abrir a janela de configuração da compilação.
  2. Se a entrada da classe Principal não listar o nome do seu arquivo que contém a classe que expõe o método de entrada main () , digite o nome correto do arquivo. (A configuração na imagem está incorreta, e é por isso que está vermelha no painel de configuração.)
  3. Meu principal () método de entrada está na classe (e arquivo) ScrabbleTest . Então, mudar a classe principal: para ScrabbleTest corrige o erro de tempo de execução.

Como outros observaram, você deve reconstruir usando a nova configuração. Estou usando um pacote, mas isso não parece fazer diferença no IME. Espero que isto ajude.


0

No meu caso, no módulo build.gradle, a atribuição mainClassName deve indicar o nome completo da classe, ou seja. conforme especificado como o nome do pacote no arquivo de código-fonte da classe principal.


0

Apenas recrie o projeto (CTRL + F9) e verifique novamente (Editar configurações) se você tiver uma classe principal definida corretamente e um módulo (se houver)


0

A solução simples é ir para a pasta de backup na linha de comando, onde está a pasta raiz do projeto. Você deve ter o SBT instalado em sua máquina.

Se você possui o sbt instalado, execute o comando "pacote sbt", isso recompilará o projeto se for bem-sucedido, volte para o intelecto que ele funcionará.


Bem-vindo ao SO! Quando você responder a uma resposta, véspera, se estiver certo, tente explicar um pouco.
David García Bodego 23/10/19

0

No meu caso, eu tinha argumentos (relativamente) longos da vm configurados. A conversão desses argumentos (sempre que possível) em variáveis ​​de ambiente corrigiu o problema para mim


Você não pode ter espaços em suas opções de VM, a menos que coloque "aspas" em torno dos argumentos
Sim

0

No meu caso, o aplicativo funciona bem quando o código estava inicialmente no diretório / src do projeto. Mais tarde, adicionei o diretório / main / java após o / src, e ocorreu o erro "Não foi possível encontrar ou carregar a classe principal ...". Naquele momento, você não podia adicionar /src/main/java/YourMain.java à configuração de execução. O que fiz foi remover a configuração de execução e clicar com o botão direito do mouse em projeto-> Abrir configurações do módulo (ou F4 depois de clicar no painel Projeto) -> Configurações do projeto-> Módulos excluir (x) a antiga raiz de conteúdo e + adicionar raiz de conteúdo, escolha / src / main / java. Reconstrua o projeto e ele será executado.


0

Você provavelmente teria especificado um pacote errado e a hierarquia do pacote não estaria correta. Olhe abaixo

insira a descrição da imagem aqui

O ide destacaria o caminho errado nesse caso.


0

No meu caso, é um projeto maven, reimportei o maven (clique com o botão direito do mouse no arquivo pom.xml e clique em Reimportar ) e funcionou imediatamente.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.