java - enable - Inspeção IntelliJ dá "Não é possível resolver o símbolo", mas ainda compila o código




intellij disable lint (20)

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 configurei um projeto Maven e adicionei log4j como uma dependência no arquivo pom.xml. As inspeções de 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 repositório 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 repositório local.

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

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

<dependency>
    <groupId>jmime</groupId>
    <artifactId>jmime</artifactId>
    <version>3.1.1e</version>
</dependency>

Agora eu criei uma nova classe 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 pela estranheza. O mecanismo de intenção do IntelliJ pega 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 Compilar => Compilar 'StackOverflowQuestion.java' compila tudo corretamente e o teste de unidade que criei para esta classe é 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 classes 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 compilação seja interrompida.

Parece que o caminho de classe da inspeção está quebrado, mas não parece haver uma configuração para isso em nenhum lugar em Configurações => Intenções | Áreas de 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 incomum 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 cria nada, mas não tenho certeza de que seria necessário se um jar de dependência estivesse faltando).

Então, alguém tem alguma IDEA?


  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 dependências ausentes
  5. Clique OK"
  6. Clique em File -> Invalidate Caches / Restart ...
  7. Clique em "Invalidar e reiniciar"

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


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 resolver 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 / memória causando o travamento do Java. IntelliJ parecia ficar corrompido.


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

Você pode verificar clicando com o botão direito do mouse no seu módulo e selecionando Abrir Configurações do Módulo. Clique na guia de dependência e verifique se o escopo da sua dependência não resolvível está definido como Compile.


Isso foi mencionado em outra resposta a essa mesma pergunta here , mas isso sozinho corrige isso para mim. Eu faço todas as minhas construções em um terminal separado, fora do IntelliJ. Portanto, o cache precisa ter as permissões adequadas para que o aplicativo IntelliJ as leia.

Execute-o a partir da pasta raiz do projeto.

$ mvn -U idea:idea

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".


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


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.


No meu caso, este 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

No meu caso, eu estou tentando abrir um projeto de inicialização de Primavera de 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.


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


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.


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

./gradlew build . / ideia gradlew


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 novo (era JDK7_45) e configure o JDK do Intellij para o novo, e ele funciona.


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.


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.


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.


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 ...


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.


se o projeto maven, em seguida, basta ir para configurações -> ferramentas de construção -> maven -> importação. marque a caixa de seleção "import maven project automatically". vai resolver o problema.





intellij-inspections