Obter “não é possível encontrar o símbolo” no projeto Java no Intellij

94

Eu faço esta chamada para uma instância singleton estática da classe GameManager.java.

HUD.getInstance().update(timeDelta);

HUD.javacontém a HUDclasse, bem como duas outras classes relacionadas HUDTextElemente HUDElement. Todas as classes estão no mesmo caminho raiz ../src/org/mypackage.

No entanto, ao compilar este projeto java no IntelliJ, não consigo encontrar o HUD do Symbol na linha que faço a HUD.getInstance()chamada.

Este mesmo código compila perfeitamente no Eclipse, alguma ideia de qual é o problema?

joe
fonte
1
Você tem a classe HUD importada em ambos?
Alex Coleman
esta é a única solução para este problema que funcionou para mim stackoverflow.com/a/56473166/8660553
Sahil SInghal

Respostas:

163

Selecione Build-> Rebuild Project irá resolvê-lo

tibu
fonte
15
Nota para noobs completos para Java / IntelliJ: acima é diferente de "Build Project"
hiljusti
4
@JustinHill - Estou bem versado em eclipse e novo no IntelliJ. Você pode me ajudar no que diz respeito a qual é a diferença entre os dois e quaisquer pontos / links que me ajudem a resolver meu tempo com o IntellJ.
nanosoft de
1
Provavelmente sou um recurso pior do que uma pesquisa no google, não usei o Eclipse. Meu comentário é apenas que "Rebuild Project" e "Build Project" são opções diferentes (eu estava ajudando alguém que se deparou com isso e eles não perceberam a diferença entre as opções)
hiljusti
1
Por que isso funcionou? A invalidação de caches e a reinicialização nem funcionaram.
b15
Funcionou .... Tentei executar "compilação limpa maven", mas isso não estava resolvendo o problema
Omtara
54

Tive o mesmo problema e descobri que nunca compilei completamente o novo projeto. Então, clicar com o botão direito e selecionar Compilar '' (shift-cmd-F9 no mac) corrigiu o problema. Parece que a compilação ao salvar não 'vê' arquivos não compilados.

Marcar a pasta src como fonte não ajudou no meu caso.

Sjoerd K
fonte
44

Eu tive o mesmo problema e resolvi clicando em Arquivo> Invalidar caches / reiniciar

ganninu93
fonte
1
Cuidado - se acontecer de você ter quaisquer alterações e elas não forem confirmadas, serão perdidas. :)
Nikola
4
A invalidação de caches não resulta em alterações perdidas. Eu nem tenho certeza de como isso funcionaria. Se você salvar um arquivo, ele será salvo, independentemente do armazenamento em cache do IntelliJ ou da confirmação para um repositório.
Christopher Schneider
28

É provável que esta seja a sua pasta ../src não marcada como uma pasta "fonte" no Intellij IDEA, então ele não sabe procurar lá para encontrar sua classe. Você pode clicar com o botão direito na pasta no explorador de projetos e escolher "marcar como pasta de origem" para corrigir isso.

Paul Sanwald
fonte
1 é uma possibilidade, mas 2 não forneceria a ele um erro dizendo que não foi possível encontrar o HUD, mas sim um erro dizendo que ele não tem o método getInstance / update?
Alex Coleman
essa opção parece ter sumido.
clankill3r
Não, ele se transforma em opções pop-up: "Marcar diretório como>"
Dracontis
Meu src contém pasta de teste dentro, e vários módulos, depois de marcá-lo como Raiz de Origem meu problema é pior.
Se Song
Para mim, essa foi a resposta certa. Minha raiz de origem já estava marcada, mas eu tive que "Desmarcar como raiz de fontes" e, em seguida, marcá-la como a raiz de fontes novamente para corrigir o erro.
yanni
26

Eu estava recebendo o mesmo erro "não é possível encontrar o símbolo" quando o fiz Build -> Make Project. Corrigi isso excluindo minha /targetpasta Maven , clicando com o botão direito do mouse no módulo do projeto e fazendo Maven -> Reimport, e fazendo Build -> Rebuild Project. Isso foi no IntelliJ Idea 13.1.5.

Acontece que Maven -> Reimportera a chave, já que o problema reapareceu algumas vezes antes de eu finalmente fazer isso.

Christian Wilkie
fonte
12

Obrigado pela ajuda até agora, parece que a correção foi compilar HUD.java primeiro (clique com o botão direito no arquivo-> Compilar HUD.java). Depois de compilar o arquivo java, o resto do projeto pode ser compilado sem problemas.

Eu realmente não sei por que isso corrigiu isso, ou por que o IntelliJ não faria isso automaticamente, mas o erro raiz parece ter a ver com o IntelliJ não lidar corretamente com várias classes em um único arquivo .java.

joe
fonte
1
O IntelliJ pode lidar com várias classes em um único arquivo muito bem, ele só precisa ter certeza de que o arquivo foi compilado em algum ponto.
Makoto
Sim, exceto que eu apenas tive o mesmo problema com um único arquivo de classe. Curiosamente, ele tinha sido executado muito bem antes de eu corri este comando maven: mvn com.zenjava:javafx-maven-plugin:2.0:fix-classpath. Ele deve mover o jar javafx do diretório libs para o diretório ext do JDK atual. Eu encontrei aqui .
Nihilon de
7

Tive que clicar com o botão direito do mouse no projeto e selecionar "Reimportar" no submenu "Executar Maven".

bitsmcgee77
fonte
5

Eu uso o maven no meu projeto. Por algum motivo, o IntelliJ estava me dando esse tipo de erro estranho. Executei o mvn clean e tentei uma ressincronização e esses erros desapareceram.

Moiz Raja
fonte
1
limpo é um ciclo de vida maven. Você o usa se deseja limpar todos os arquivos de saída que foram criados pelo projeto maven.
Moiz Raja
5

Para mim - tentei essas etapas (Invalidate Cache & Restart, Maven Reimport), mas não funcionaram. Então eu deletei o .idea, .settingse, .projectpasta e tentou - ele trabalhou.

R11G
fonte
3
Excluir a .ideapasta fez isso para mim.
Daniel D.
4

Isso aconteceu comigo quando excluí uma pasta e, em seguida, copiei e colei de volta no projeto.

Right-click project folder -> Rebuild trabalhou para mim.

Tomas Lukac
fonte
3

Eu enfrentei o mesmo problema, e há muitas soluções dadas na resposta, tentando todas essas soluções me levou algum tempo, então aqui eu gostaria de propor uma abordagem metódica se você receber esse erro.

Verifique as seguintes coisas, crie / atualize se algo estiver faltando

  1. A pasta src está marcada como a pasta de origem
  2. Arquivos .imls estão presentes
  3. O processamento de anotação está habilitado
  4. Se você usou recentemente @UtilityClass, esse também pode ser o motivo, Bug Link

Se tudo estiver bem, você pode tentar seguir as soluções na ordem dada

  1. Recompile o arquivo / módulo

  2. Se isso não resolver o problema, tente relatar a dependência do maven e construir o projeto usando Maven -> ReimporteBuild -> Rebuild Project

  3. Experimentar mvn clean install -DskipTests

  4. Tente invalidar o cache do IntelliJ e reiniciar o IDE, usando File > Invalidate caches/ restart

  5. Exclua a pasta .idea e reimporte o projeto

Obrigado a todos que responderam a esta pergunta, você pode consultar as respostas de cada ponto para obter mais detalhes.

Deepak Patankar
fonte
1
funciona: Tente invalidar o cache do IntelliJ e reiniciar o IDE, usando Arquivo> Invalidar caches / reiniciar
Energia
2

Sei que essa é uma pergunta antiga, mas de acordo com minha experiência recente, isso acontece porque os recursos de construção foram excluídos ou o Idea não pode reconhecê-los como a fonte.

Onde quer que o erro apareça, forneça fontes para a pasta / diretório e este erro deve ser resolvido.

Às vezes, mesmo quando atribuímos fontes para toda a pasta, classes individuais ainda podem estar indisponíveis. Para usuários novatos, a solução simples é importar uma nova cópia e construir o aplicativo novamente para estar pronto para prosseguir.

É aconselhável fazer uma instalação limpa depois disso.

Matt
fonte
2

recompilar a classe Application.java principal fez isso para mim, clique com o botão direito em classe> Recompilar

Taranjit Kang
fonte
2

Eu sei que este tópico é antigo, mas, outra solução era executar

$ mvn clean install -Dmaven.test.skip=true

E no IntelliJ do CMD + Shift + A (mac os) -> digite "Reimportar todos os projetos Maven".

Se isso não funcionar, tente forçar o download das dependências do maven

$ mvn clean -U install -Dmaven.test.skip=true
edmar
fonte
No meu caso, havia classes geradas automaticamente (com base em arquivos XML) que outras partes do código faziam referência. Durante a construção com trabalhos maven, se não mvn installeditados, o IntelliJ não viu essas referências e falhou no ambiente de execução.
tokosh
2

Para mim, era um problema com o Lombok, porque ele requer que o processamento de anotação esteja ativado. Você pode encontrar esta caixa de seleção emSettings > Build > Compiler > Annotation Processors

RaulDanielPopa
fonte
Obrigado! Isso consertou para mim.
nyarasha
1

No meu caso, o problema era usar o recurso experimental @UtilityClass do Lombok em meu projeto java no Intellij Idea, para anotar os métodos de uma classe como "estáticos". Quando tornei explicitamente cada método da classe como "estático" em vez de usar a anotação, todos os problemas de compilação desapareceram.

RAM
fonte
0

Como este é o primeiro resultado na pesquisa do Google pelo erro "intelliJ não é possível encontrar o símbolo", também apresentarei minha solução.

O problema para mim é que meu projeto originou-se do Eclipse e alguns arquivos continham dependência de classes que foram geradas src/generated-sourcespor especificações em pom.xml. Por algum motivo, isso não foi executado corretamente quando abri o projeto pela primeira vez e reconstruir / reimportar não ajudou, portanto, os arquivos nunca foram gerados.

A solução foi clicar com o botão direito do mouse no módulo e selecionar Maven -> Generate Sources and Update FoldersIsso resolveu o problema e eu poderia compilar.

Araklaj
fonte
0

Certifique-se de que o arquivo fonte da classe java que você está tentando se referir tenha uma .javaextensão. Foi .ajno meu caso (devo ter pressionado "Criar aspecto" em vez de "Criar classe" ao criá-lo). O IntelliJ mostra para este arquivo o mesmo ícone da classe "normal", mas o compilador não o vê durante a construção.

Mudar .ajpara .javaconsertou no meu caso.

fracz
fonte
0

Às vezes, a classe que você deseja está no testdiretório de origem. Aconteceu comigo mesmo ...

Sam Barnum
fonte
0

Eu estava tendo o mesmo problema, exceto que estava importando as classes para as quais as dependências não estavam resolvendo de alguma forma. Eu atualizei projetos maven, projeto de reconstrução. Ainda não resolveu. Parece que o IntelliJ estava armazenando algo em cache incorretamente. Reiniciei o IntelliJ e isso resolveu as dependências. Acho que limpou o cache de alguma forma.

MoneeK
fonte
0

Se você estiver usando o Lombok, certifique-se de ter ativado o processamento de anotação.

Muzammil
fonte
0

Estou vendo muitas respostas propondo uma construção ou reconstrução, mas caso isso não resolva o seu problema, observe que o IDEA pode detectar um método, mas não será compilado caso você tenha um newantes, pois será esperando a instância.

insira a descrição da imagem aqui

Carlos López Marí
fonte
0

No meu caso, tive um problema em encontrar uma classe de outro módulo. No pom.xml, acabei de ter essa dependência com o <scope>compile</scope>especificado. Remover esta linha ajudou.

Nikiforovpizza
fonte
-1

Eu sei que isso é antigo, mas para qualquer outra pessoa, certifique-se de que a classe que está faltando está no mesmo pacote da classe de onde você obteve o erro / de onde está chamando.

Pasha Shestakov
fonte
Votos negativos, pois as classes podem ser importadas de outros pacotes. Geralmente, a classe de destino deve ser importada e no caminho de classe; ao usar o Maven, a dependência deve ser definida corretamente.
fxnn