Inspeção IntelliJ dá “Não é possível resolver o símbolo”, mas ainda compila o código

Plataforma: IntelliJ Community Edition 10.0.3
SDK: jdk1.6.0_21
SO: Windows 7

Então eu tenho uma situação estranha com o IntelliJ que me deixou completamente perplexo. Eu configuro um projeto Maven e adiciono log4j como uma dependência no arquivo pom.xml. As inspeções do IDEA são executadas corretamente e minha unidade testa todas as compilações e execuções.

Em seguida, adicionei a biblioteca jmime da hunnysoft ao meu repository maven local usando o arquivo install: install-mvn da seguinte forma.

mvn install:install-file -Dfile=jmime.jar -DgroupId=jmime \ -DartifactId=jmime -Dversion=3.1.1e -Dpackaging=jar 

O Maven instalou o arquivo jar bem no meu repository local.

Em seguida, entrei em Configurações do IntelliJ => Maven => Serviços de Repositório e Atualizei meu repository local (para que o IntelliJ reindexasse o conteúdo do repository).

Finalmente, adicionei a seguinte dependência ao meu arquivo pom.xml (logo acima da dependência log4j).

  jmime jmime 3.1.1e  

Agora eu criei uma nova class da seguinte forma:

 package com.stackoverflow.question; import org.apache.log4j.Logger; import com.hunnysoft.jmime.ByteString; import com.hunnysoft.jmime.Field; import com.hunnysoft.jmime.FieldBody; public class StackOverflowQuestion { public Field create(String name, String text) { Logger.getLogger(getClass()).debug("create entered"); FieldBody body = new FieldBody(); body.setText(new ByteString(text)); Field field = new Field(); field.setFieldName(name); field.setFieldBody(body); return field; } } 

Agora para a estranheza. O mecanismo de intenção do IntelliJ seleciona e reconhece a importação do Logger no arquivo maven pom bem. No entanto, para todas as importações hunnysoft ele relata: “Não é possível resolver o símbolo ‘ByteString / Field / FieldBody'”, MAS Compilação => Compilar ‘StackOverflowQuestion.java‘ compila tudo corretamente e o teste de unidade que criei para esta class é executado corretamente as intenções marcam a chamada para create () como uma área problemática também).

Então, em algum lugar, de alguma forma o IntelliJ está ignorando o arquivo jmime.jar para o subsistema de intenção. Estou confuso porque a dependência log4j funciona bem e tudo compila e corre bem. F12 (“Go To Declaration”) funciona na importação do Logger, mas quebra todas as importações do jmime.

Ah, uma outra coisa, se eu for para a visualização “Pacotes” na janela “Projetos”, o pacote “com.hunnysoft.jmime” aparece e eu posso ver TODAS as classs que importei no snippet de código acima em “Bibliotecas” . Remover a dependência acima do arquivo pom.xml faz com que esse pacote desapareça e a compilation seja interrompida.

Parece que o caminho de class da inspeção está quebrado, mas não parece haver uma configuração para isso em nenhum lugar em Settings => Intentions | Áreas do compilador (não que eu esperasse tais configurações, acredito que o IDEA já deve saber o classpath correto baseado no arquivo pom e no JDK).

Como experimento final, criei um novo projeto de aplicativo padrão J2SE (sem usar o maven) e adicionei o arquivo jmime.jar diretamente ao projeto como uma de suas bibliotecas. Eu me deparo com exatamente os mesmos problemas descritos acima neste novo projeto.

Aqui está o MANIFEST.MF do arquivo jmime jar.

 Manifest-Version: 1.0 Ant-Version: Apache Ant 1.5.4 Created-By: 10.0-b23 (Sun Microsystems Inc.) Name: com/hunnysoft/jmime/ Sealed: true Specification-Title: Hunny JMIME Specification-Version: 3.1.1 Specification-Vendor: Hunny Software, Inc. Implementation-Title: com.hunnysoft.jmime Implementation-Version: 3.1.1E Implementation-Vendor: Hunny Software, Inc. 

Eu não vejo nada de anormal neste arquivo jar.

Meu melhor palpite é que talvez o problema possa ser um problema de dependência ausente. Mas o jmime do AFAIK deve ser independente (o JarAnalyzer não faz nada, mas não tenho certeza se um jarro de dependência está faltando).

Então, alguém tem alguma IDEA?

Primeiro de tudo você deve tentar File | Invalidate Caches File | Invalidate Caches e, se isso não ajudar, exclua o diretório do sistema IDEA . Em seguida, importe novamente o projeto Maven e veja se isso ajuda.

Em alguns casos estranhos, as classs compiladas podem relatar informações erradas e confundir IDEA. Verifique se as classs deste jarro reportam nomes corretos usando o javap .

O seguinte truque resolveu este problema para mim:

  • Clique com o botão direito no editor de código
  • Passe o mouse sobre o Maven e expanda
  • Clique em Reimport

Minha versão da ideia é 12.0.4

Para usuários Gradle:

Você pode precisar sincronizar seu projeto com seu arquivo build.gradle .

Você pode clicar com o botão direito do mouse em seu arquivo gradle no painel Project para fazer isso, mas isso não parece fazer nada para mim (suspeito de um bug na minha versão). Você saberá se isso acontecer, porque não vai iniciar nenhuma tarefa do IntelliJ que você estará esperando. Em vez disso, abra o painel de ferramentas Gradle e clique no botão Sincronizar (Atualizar). Isso funcionou para mim onde invalidar o cache e reiniciar não.

Minha própria circunstância: eu estava usando um projeto Scala com Gradle e tive que fazer isso.

Uma etapa extra, quando eu fiz File -> Invalidate Caches e reiniciei o IDE, abra um projeto. Ele apareceu em um toastbox no canto superior direito, perguntando se eu deveria habilitar a importação automática e se isso resolveu o problema.

Nenhuma das soluções acima funcionou para mim. O que foi remover o arquivo main.iml manualmente e de repente funcionou.

Outra coisa a verificar: certifique-se de que as dependencies não sejam duplicadas. No meu caso, descobri que um módulo exibindo esse comportamento estava mal configurado da seguinte maneira: ele dependia de outro módulo e dependia de um jar produzido por esse outro módulo. Isso significava para cada símbolo referenciado em duplicado e era ambíguo.

Um fixo foi publicado? Aparece o problema originalmente afetado v11 / 12 devido a uma “revisão do compilador” em 2013. Com a discussão sobre questões relacionadas no Jira até o final de 2014. http://youtrack.jetbrains.com/issue/IDEA-98425

Também no Jira IDEA-98425 foi marcado como fixo mas não verificado (na v12.0.3). Nenhuma das soluções a seguir ajudou a resolver o problema “Não é possível resolver o símbolo” com a versão 13.1.1 no Windows

uma. Excluir a pasta .IdealIC13 (Em seguida, File \ Invalidate Caches / Restart)

b. Na janela Projetos do Maven ,

b.1 mvn -U idea: idea -〉 Executando este objective maven supõe recarregar as dependencies. Isso funciona prev, mas desde o último FRI, a execução deste objective do maven falhou ao tentar recompilar o projeto (claro que ele falha como “Unable to solve Symbols”, é o que estou tentando corrigir executando este comando em primeiro lugar) mvn -version – mostra a versão do maven referenciada 3.2.5 e que está funcionando

b.2 Basta clicar com o botão direito do mouse no projeto e Reimportar

b.3 File \ Invalidate Caches / Restart

c. Tentei tanto Habilitar e Desabilitar esta configuração: Arquivo -> Configurações -> Maven -> Importando -> “Usar maven3 para importar projeto”

d. Configurações \ Maven \ Multiproject build fail policy = Falha no final (em vez de Padrão)

Nada funciona. O que está acontecendo com o suporte do IntelliJ no Maven.

https://youtrack.jetbrains.com/issue/IDEA-99302

Do histórico de lançamentos do JetBeans, https://www.jetbrains.com/company/history.jsp

IntelliJ v14 NOV 2014

IntelliJ v13 DEZ 2013

Eu suponho v12 fixo (embora não verificado ) seria incorporado em versões posteriores. Qualquer um que tenha problemas semelhantes com a versão do IntelliJ? Por favor, compartilhe sua experiência. Suporte do IntelliJ maven parece quebrado.

Nomes de módulos inconsistentes / duplicados na estrutura do projeto estavam causando esse problema para mim.

  1. Vá em File -> Project Strucutre -> Modules
  2. Em clique em módulos que têm sublinhado vermelho
  3. Cheguei à guia “Dependências”
  4. Certifique-se de que as dependencies que estão vermelhas realmente existam na lista de dependencies. Caso contrário, renomeie-os para corresponder aos nomes de dependência existentes

Isso pode acontecer quando o IntelliJ não é desligado corretamente e, portanto, não pode salvar adequadamente nomes de módulos renomeados.

Isso foi mencionado acima, mas isso sozinho corrige isso para mim. Eu faço todas as minhas construções em um terminal marítimo, fora da IntelliJ. Portanto, o cache precisa ter as permissions adequadas definidas para o aplicativo IntelliJ para lê-las.

Execute-o a partir da pasta raiz do projeto.

 $ mvn -U idea:idea 

Eu acabei de ter esse problema e ele simplesmente não iria embora. Eu finalmente acabei com o diretório de configuração do IntelliJ em ~ e reconstruí meu projeto IntelliJ do zero. (Isso levou apenas cerca de 15 minutos no final, em comparação a passar uma hora tentando solucionar problemas com arquivos em cache etc.)

Note que o meu palpite é que o problema inicial foi causado por algo como javathings.blogspot.com/2009/11/too-many-open-files-in-intellij-idea.html (NB: a partir de 2018, esse link está morto , mas o archive.org tem uma cópia da página de quando esta resposta foi escrita pela primeira vez.) ou um problema de espaço em disco / memory fazendo com que o Java travasse. O IntelliJ pareceu ficar corrompido.

Por outra alternativa.

Eu também tive esse problema quando usei o JDK7_07. Eu tentei todas as respostas aqui (exceto a exclusão do diretório do sistema IDEA). Mas ainda tenho o problema. Então o que eu fiz é:

Instale o JDK mais recente (era JDK7_45) e configure o JDK do Intellij para o novo, e ele funciona.

Depois de invalidar meu cache e reiniciar; e confirmando que minhas configurações de maven estavam corretas, eu ainda estava vendo “Não é possível resolver o símbolo” para um módulo que definitivamente defini como uma dependência. Acontece que eu tinha definido para o escopo errado.

Você pode verificar clicando com o botão direito do mouse em seu módulo e selecionando Open Module Settings. Clique na guia de dependência e verifique se o escopo da sua dependência não resolvível está definido como Compile.

Reimportar o projeto funcionou para mim. Clique com o botão direito em Project -> Maven -> Reimport

Quando eu fiz File -> Invalidate Caches e reiniciei o IDE, abra um projeto. Mostrou um diálogo no canto superior direito “Maven changes detected” e deu uma opção para importar e ativar a importação automática. Mesmo depois de importar o projeto aqui, tive o mesmo problema. O passo acima resolveu o problema.

Sim, parece que você tem que criar bibliotecas contendo os JARs que você precisa e adicioná-los como uma dependência em seu módulo.

Para usuários do Intellij Idea, esses comandos antes mesmo de importar o projeto podem ajudar:

./gradlew build . / gradlew ideia

Minha estrutura de projeto:

 src -> main -> scala -> mypackages 

O que funcionou:

Clique com o botão direito do mouse na pasta scala e clique em “Marcar Diretório como Raiz de Origens”.

No meu caso, apenas o buildDir é removido. Neste caso, o File | Invalidate Caches File | Invalidate Caches não funciona.

Quando eu faço Build | Make Project Build | Make Project antes do File | Invalidate Caches File | Invalidate Caches , tudo funciona bem.

  1. Abrir configurações”
  2. Procure por “Maven”
  3. Clique em “Arquivos ignorados” em “Maven”
  4. Desmarque os arquivos pom.xml que contêm as dependencies ausentes
  5. Clique OK”
  6. Clique em File -> Invalidate Caches / Restart …
  7. Clique em “Invalidar e reiniciar”

Nenhuma das soluções acima resolveu isso para mim. Eu tive o mesmo problema onde o código compilado bem, mas IntelliJ mostrou que não conseguiu encontrar a importação. Mesmo que o IntelliJ tenha sugerido a importação em primeiro lugar da conclusão do código.

Minha solução foi mover tudo para o pacote padrão, excluir o pacote com.foo.bar , depois criá-lo novamente e mover tudo de volta.

Às vezes, apenas abro a estrutura do projeto, clico no projeto e escolho uma versão do SDK .

Remova o arquivo: iml encontrado em pastas Java e de teste dentro do projeto e invalide e reinicie.

Ele vai pedir posso remover os projetos. Coloque sim. O erro será desativado.

às vezes, quando você cria um pacote como com.mydomain.something, a estrutura de diretórios não é criada e você fica com uma única pasta chamada “com.mydomain.something”. Nesse caso, você deve criar uma estrutura de diretório, como

 com |_mydomain |_something 

No meu caso, estou tentando abrir um projeto de boot de mola da IntellijIdea tenho o mesmo problema como incapaz de importar todos os arquivos relacionados com a primavera.

Então eu fiz:

Arquivo -> Fechar Projeto -> Importar Projeto -> Importar do modelo externo -> Escolher Gradle -> Próximo -> Selecionar o projeto da localização do arquivo -> Concluir

Agora tudo está funcionando bem como esperado.

Eu tenho visto muitas respostas aqui, mas finalmente encontrei esta solução. Pode ser usado por alguém como eu.

Nenhuma das outras respostas funcionou para mim. Minhas importações não estavam sendo resolvidas porque o IntelliJ apontou para o arquivo .m2 errado.

Versão IntelliJ: IntelliJ Idea 2018.1.5

Minha localização para o diretório .m2 foi apontada para o caminho errado. Tudo o que fiz para corrigi-lo foi redirect o IntelliJ para o diretório .m2 correto e atualizá-lo.

Primeiro, vá para: File-> Settings-> Build, Execution, Deployment-> Build Tools-> Maven

Eu tive que alterar o arquivo de configurações do usuário: e o repository local: para o local correto do meu diretório .m2.

Depois disso, vá para: Arquivo-> Configurações-> Construção, Execução, Implantação-> Ferramentas de Construção-> Maven-> Repositórios

e clique no botão Atualizar.

se maven project então vá para settings -> build tools -> maven -> importing. marque a checkbox de seleção “import maven project automatically”. vai resolver o problema.

Invalidate Caches funcionou para mim, mas depois de executar o aplicativo teve o mesmo erro.

Então eu tentei ( Intellij ):

1 – Barra de menu – Refactor | Construir | Executar | Ferramentas – clique em Construir e Reconstruir Projeto

2 – MVN limpo

3 – Clique com o botão direito em project> Maven> Generate Sources e Update Folder

Espero que funcione para voce.

obrigado

Ou talvez o arquivo que você importou seja muito grande. Esse é o meu caso, quando eu mudo a propriedade Intellij: iead.max.intellisen.filesize (o caminho é $ {idea de idéia} /bin/idea.properties) para um valor maior, como 25000, e reinicie o IDE, o problema desapareceu. Espero que isto ajude.

No meu caso, esse problema apareceu depois que eu verifiquei uma grande reestruturação dos arquivos no meu projeto maven. No momento do check-out, eu tinha algumas alterações minhas ainda não verificadas nas alterações ainda ativas. As mudanças não foram para nenhum dos arquivos sendo reestruturados, tanto quanto eu poderia dizer.

Invalidar o cache e reiniciar não funcionou para mim. O que funcionou foi:

  • revertendo as mudanças que eu havia feito antes da grande reestruturação
  • reimportando todos os módulos do maven

Soluções sugeridas não funcionaram. Eu tive que desconsiderar vários projetos, clicando com o botão direito no projeto pom => maven => unignore.

Então depois de um

 mvn clean install -T 6 -DskipTests 

no console, a IntelliJ ficou feliz novamente. Não faço ideia de como os projetos foram ignorados …

Eu tive um problema semelhante quando mudei para um novo computador.

Copiei todos os arquivos IDEA (mesmo as pastas% APPDATA% relacionadas), mas a compilation do Maven foi bem-sucedida, mas o IDEA não localizou nenhuma class das dependencies ao criá-la.

A solução: eu comecei com um perfil IDEA novo e limpo removendo as pastas das pastas% APPDATA%