O pacote Maven funciona, mas a compilação do Intellij falha

95

Eu tenho um projeto JDK 1.7 com uma dependência maven para um jar local em meu repo maven.

Não consigo construir o projeto usando Intellij, com os erros de que um símbolo não pode ser encontrado (o símbolo é uma classe importando pacotes do jar local)

Mas posso construir o projeto com sucesso usando 'pacote mvn'.

Passei muito tempo procurando soluções, coisas que já fiz:

  • Cache inválido
  • 'mvn clean install' a dependência local do jar
  • Marcado para 'autoload snapshots' na configuração do maven do Intellij
  • Maven reimpotado em Intellij
  • Syncornized

Este erro aconteceu algumas vezes antes, mas normalmente apenas fechar o Intellij e / ou fazer a 'instalação limpa mvn' resolveu.

Por favor ajude.

Yarin Miran
fonte
1
O seu repositório maven está configurado corretamente com o IntelliJ?
Ruchira Gayan Ranaweera
sim, o caminho para o repositório é aquele que é atualizado quando eu uso 'mvn install'
Yarin Miran
3
O jar local é um instantâneo ou uma versão de lançamento do jar? Se o jar for um instantâneo, você deve marcar 'Sempre atualizar instantâneos' nas configurações do Intellij Maven para forçar a atualização do ide.
F. Geraerts
sim é um instantâneo, já marquei essa opção. Mesmo assim, nada muda :(
Yarin Miran
1
Na parte Compilador das Configurações, "usar compilação externa" está marcada? E em Use external build, a opção "Rebuild module on dependency change" também está marcada?
F. Geraerts

Respostas:

159

Sei que é tarde, mas a execução mvn idea:idearesolve o problema.

Rahul Jha
fonte
3
Essa deve ser a resposta aceita, pois oferece uma solução real, não apenas o motivo pelo qual falha. Todos os meus updoots!
Warkst
5
mvn idea:ideanão foi atualizado e não é mantido por jetbrains
Sean
3
Tive que executar novamente o mvn install depois disso
Fabio F.
2
Você me salvou do desespero. Eu gostaria de beijar você
Martin Bamford
2
Por que o intellij não consegue fazer isso sozinho após todos esses anos. Ainda preciso executar este comando toda vez que importar um novo projeto! SMH
RBz
29

Tente excluir todos os .iml e seu POM. Em seguida, copie e cole seu POM novamente em seu projeto e abra-o novamente e importe-o novamente.

masoodg
fonte
13
Talvez apenas tente "reimportar tudo" na visualização do Projeto Maven, antes de excluir qualquer coisa
Zveratko
3
Eu tive que deletar o .iml também, reimportar maven não consertou.
Daniel de Zwaan
1
@masoodg, muito obrigado! você salvou meu dia! Apenas reimportar não ajudou. Seguiu suas instruções e funciona perfeitamente.
Tabalin
Fechando Intellij, excluindo o *.iml, *.ipre *.iwsarquivos do diretório raiz do projeto, em seguida, reabrir Intellij fixa-lo para mim
theferrit32
16

Descobri que meu arquivo .iml e pom eram conflitantes e estavam causando o problema.

Yarin Miran
fonte
1
Eu tenho um problema semelhante. Eu tenho configuração com plugin de data de compilação. Este plugin requer a propriedade buildDate com este valor "$ {maven.build.timestamp}". O IntelliJ tem problemas ao analisar este arquivo pom e iml não está devidamente sincronizado com o pom. Quando eu comento a sincronização da propriedade buildDate funciona bem.
chalimartinas de
9
alguma dica sobre como consertar isso? Eu só gostaria que o Intellij funcionasse, parece que o Netbeans executa qualquer projeto, não importa o que ... este é um destruidor de produtividade completo :( ...
Breno Salgado
1
Não sei se sua correção foi a mesma, mas tive que encerrar e recarregar o projeto para forçar o IntelliJ a atualizar seu arquivo IML (ele não o atualizou de pom.xml porque eu adicionei algumas novas dependências)
SonarJetLens
1
O 'como' é muito mais útil do que o 'porquê'. Adicione alguns detalhes sobre como você corrigiu esse problema.
João Matos
2
Fechei o IntelliJ. Então, eu apaguei C:\Users\USERNAME\.IntelliJIdea2017.2\system. Depois disso, fiz um git clean -xdfno diretório de origem para remover todos os arquivos sem versão e importei o projeto novamente. Funciona perfeitamente agora.
koppor
16

Maven ReImporttrabalhou para mim como abaixo ...

insira a descrição da imagem aqui

Ram Ghadiyaram
fonte
1
O IntelliJ IDEA Ultimate 2020.3 tem "Reload Project" e funcionou.
AGan
15

Adicionando mais algumas dicas, já que esta é a primeira coisa que surgiu na pesquisa quando eu estava tendo problemas semelhantes (o projeto é compilado no mvn, não no IntelliJ), caso possa ajudar outra pessoa.

Quando eu fiz isso, foi uma correção diferente no Windows e Mac.

No Mac, entrei em ItellijIDEA / Preferences / Build, Execution, Deployment / Build Tools / Maven / Maven Home Directory e o configurei para usar meu Maven instalado separadamente em vez do Maven empacotado. Todos os problemas de compilação foram embora.

No Windows, eu estava vendo exceções no idea.log relacionadas ao SSL e minha árvore de projeto tinha apenas Java no ramo Bibliotecas externas. Olhando para outros sites, parece que o IntelliJ usa seu próprio JDK privado em vez do do sistema (embora no meu caso eu já tivesse exatamente a mesma versão do JDK instalada). Meu sistema JDK tem certificados instalados no armazenamento de chaves para o servidor Nexus corporativo que o JDK privado IntelliJ não tinha, então exceções estavam sendo lançadas quando ele tentava obter arquivos do Nexus. Para isso, a solução foi sair do IntelliJ, definir uma variável de ambiente chamada IDEA_JDK para apontar para o JDK que eu já tinha instalado e que tinha os certificados adequados e reiniciar o IntelliJ. Todos os problemas de compilação foram embora.

rrjp
fonte
mesmo problema no Linux com o IntelliJ 2016.3.5 mais recente - primeiro funcionou, depois de algumas alterações do POM saiu de sincronia, e apenas trocar o impl Maven ajudou, então também pode ser que apenas trocar o Maven acione uma atualização no IntelliJ que causa o projeto deve estar em sincronia novamente ...
Gregor
5

O IDE usa sua própria cópia agrupada do Maven ao fazer compilações. Se o maven no terminal for diferente do IDE, você deseja que sejam iguais.

GOTO (em um Mac) - IntelliJ Idea -> Preferências -> Compilação, execução, implantação -> Ferramentas de compilação -> Maven. Defina o caminho para o seu diretório inicial Maven Para encontrar o caminho para o Maven que você usa no terminal, digite o comando mvn -versione isso deve imprimir um monte de detalhes, incluindo o caminho dir. Coloque isso no diretório inicial do Maven .

Para estar seguro, você também pode fazer o mesmo para a localização JDK

==== Algumas outras coisas que podem causar tais problemas ===

Se estiver fazendo compilações de pacote mvn ou mvn clean install, então ele tem que fazer algo com caches IDE. Entre outras coisas, este geralmente ajuda com tais erros ->

Arquivo -> Invalidar Caches

ARCA
fonte
4

Sei que estou muito atrasado para essa conversa, mas só queria postar isso caso outra pessoa encontre esse problema. Outra razão pela qual isso acontece é porque você não está se referindo ao repositório certo. O Intellij pega a versão empacotada de um jar por padrão, em vez do seu próprio repositório maven. Confirme se o repositório conectado é o correto.

Otimizador
fonte
Se você instalou o maven usando o homebrew, definir o diretório inicial do maven corretamente (por exemplo) /usr/local/Cellar/maven/3.5.4/libexec resolve este problema
sushilshimpi
3

No meu caso, meu iml não estava sincronizado, então eu apaguei o iml para o módulo específico e, em seguida, na opção maven, selecione unignore project para recriar o iml

Bikas Katwal
fonte
3

do prompt de comando execute o commnad: mvn idea:ideae clique com o botão direito no projeto -> no menu reimporte as dependências

Ram Maddela
fonte
1

"símbolo não encontrado" significa que o intellij não é capaz de resolver a "dependência". Assim, você pode forçar a "Análise de dependência" clicando em "Analisar" -> "Analisar dependências" e selecionar o "Escopo de análise"

dgm
fonte
1

Muitas dicas valiosas nas demais respostas aqui, só quero adicionar a solução que funcionou para o meu problema .

Recentemente, começamos a usar um repositório Maven privado e sempre fazemos isso mvn -s settings.xmlao invocar o cmdline Maven. Obviamente, o IntelliJ não sabe sobre o repo privado, portanto, precisa de uma ajudinha.

Vá para Configurações -> Compilar, Execução, Implementação -> Ferramentas de compilação -> Maven e substitua a opção "Arquivo de configurações do usuário".

insira a descrição da imagem aqui

Johannes Rudolph
fonte
1

Eu tive o mesmo problema. Vamos para:

Arquivo -> Estrutura do Projeto -> Módulo . Selecione seu módulo e na guia " Dependências ", certifique-se de que todas as dependências do maven foram adicionadas.

Para ter certeza de que você será avisado sobre um problema semelhante no editor de ideias: mude da "guia Dependências" para "Fontes" e adicione marque seu src como fonte.

Denorm
fonte
0

Eu tive o mesmo problema. Eu mudei a versão do maven de 3.0.5 para 3.0.4 nas configurações do Idea e tudo funciona bem agora. Não sei por que isso me ajuda.

Boris Mitioglov
fonte
0

Tentei invalidar o cache, mudando o Maven para a versão instalada e nada funcionou.

Fechar e recriar um novo projeto resolveu isso.

Anubha
fonte
0

Fechei o projeto e importei-o novamente clicando no pom raiz (não apenas na pasta, mas no próprio arquivo pom).

Togepi
fonte
0

Tentei tudo o que foi descrito acima sem nenhuma alegria. No entanto, fiz uma coisa que finalmente funcionou:

Eu fui para C: \ Users \ .IntellijJIdea2018.2 e apenas excluí a pasta inteira.

Ele remove todas as configurações e cache do IntelliJ. Tive que reimportar meu projeto do zero, mas uma simples remoção e reimportação não funcionou antes, mas finalmente o fez funcionar novamente.

Emma
fonte
0

Se você estiver usando o Gradle, tente o comando abaixo. Isso resolveu meu problema

gradle cleanIdea idea

Liju John
fonte
0

Este procedimento simples leva cerca de 1 minuto sem nenhum risco.

  • Fechar IntelliJ
  • Exclua SOMENTE os arquivos específicos do IntelliJ, como .idea / *, * .iml, .settings, etc. Foi sugerido excluir o POM também, mas isso não é necessário IMHO.
  • Em seguida, recrie o projeto no IntelliJ usando: Arquivo > Novo> Projeto de fontes existentes> siga as etapas. Esteja ciente de NÃO importar vários perfis ou (mesmos projetos).
tm1701
fonte
0

Exclua a pasta .idea e feche o IDE

abra o IDE novamente e importe o projeto que fará uma nova importação porque a pasta .IDEA foi excluída por nós anteriormente

Verifique o módulo de bibliotecas externas e, se não estiver preenchido com as dependências necessárias, verifique se a localização do maven settings.xml é fornecida corretamente no IDE

primeiro postcommenter
fonte
0

Existe também uma possibilidade que não foi mencionada. Se você importar uma biblioteca decom.sun.* . Isso também causará esse problema.

Os programas funcionam quando executados no ide, porque essas classes com.sun.*estão todas no jre/libdiretório, ele será carregado durante a execução. Mas quando você executa mvn package, essas bibliotecas não estarão acessíveis por causa da restrição do oracle desde o java 1.6 (essas bibliotecas foram descontinuadas de certa forma). Para resolver este problema, você pode adicionar

<build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.3.2</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                    <compilerArguments>
                        <verbose />
                        <bootclasspath>C:/Program Files/Java/jdk1.8.0_161/jre/lib/rt.jar</bootclasspath>
                    </compilerArguments>
                </configuration>
            </plugin>
        </plugins>
    </build>

lembre-se de substituir o cootclasspath pelo seu próprio caminho de rt.jar

Você pode pesquisar Access restriction: The type XXX is not accessible due to restriction on required librarymais detalhes.

coitado
fonte
0

Se houver módulos incorretos configurados, execute estas etapas:

  • Vá para as configurações do projeto
  • Vá para Módulos
  • Exclua os módulos que não deveriam estar lá
OSGI Java
fonte
0
  1. Na guia maven, clique em + e escolha pom.xml
  2. Na guia maven, clique em fontes e documentação para download
  3. Na estrutura do projeto (onde você pode ver os arquivos / diretórios do projeto), clique com o botão direito no projeto que você está tentando construir e escolha Build Module Project Name.
  4. Na guia Executar- Editar Configurações com + adicionar Aplicativo e preencher os campos abaixo: i. Classe principal - escolha manualmente na guia Projeto e selecione a classe principal ii. Use classpath do módulo - escolha o nome do aplicativo iii. Encurte a linha de comando - arquivo classpath
  5. Agora, basta executar o aplicativo.
Jaydeep Bhatia
fonte
0

No meu caso, o problema estava em uma versão diferente do Project Java SDK. Quando eu estava construindo um projeto a partir do terminal, o maven usava Java 8, e quando eu estava construindo a partir do IDEA, ele usava Java 11.

Vá para Arquivo> Estrutura do projeto ... e em Configurações do projeto defina o SDK do projeto para a versão que você precisa.

Roman Kovalchuk
fonte
0

Para mim, o problema era que eu tinha o compilador Ajc selecionado nas configurações do IntelliJ Java Compiler . Depois que mudei de volta para Javac, tudo funcionou bem.

Redar
fonte
0

Para mim, no Mac, resolvi excluindo o aplicativo Intellij Idea do meu computador e excluindo os arquivos de cache em ~ / Library / Application Support / JetBrains / IntelliJIdea2020.1 ~ / Library / Caches / JetBrains / IntelliJIdea2020.1

Em seguida, reinstale-o, abra meu projeto e construa-o com sucesso!

Xi Zhao
fonte
0

Eu encontrei o mesmo problema. Posso executar o mvn clean packagecomando com sucesso no terminal, mas não consigo executar ou construir a partir do IntellJ. Eu fiz as seguintes ações, mas todas falharam.

  • Cache inválido
  • correr mvn clean packageoumvn clean package no terminal
  • Marcado para 'autoload snapshots' na configuração do maven do Intellij
  • Sincronizar ou Reimportar
  • Exclua todos os arquivos relacionados ao IntellJ, como .idea e reimporte o projeto
  • remova todos os arquivos de dependência e execute mvn clean package
  • Mude a versão do Java ou use o Java integrado no IntellJ
  • corre mvn idea:idea
  • Mudar a casa do Maven
  • marque o diretório src como fonte na guia do módulo

A última coisa que fiz funcionou: Exclua o .idea e .iml do projeto, exclua todos os arquivos de dependência e, em seguida, exclua o IntellJ do computador. Após reinstalar o IntellJ meu projeto foi construído com sucesso. Eu gostaria de ter uma maneira melhor de resolver isso.

Adão
fonte