IntelliJ Organizar importações

254

O IntelliJ possui um recurso Organizar importações semelhante ao do Eclipse? O que tenho é um arquivo Java com várias classes ausentes de suas importações. Exemplo:

package com.test;
public class Foo {
    public Map map;
    public JTable table;
}

No Eclipse, eu poderia usar Organizar Importações e importaria automaticamente ambos java.util.Mape javax.swing.JTable. No IntelliJ, tenho que ir individualmente para cada turma, selecioná-la e pressionar Alt-Enter. Existe um recurso Otimizar importações, mas tudo o que parece fazer é classificar e expandir as importações existentes .

Estou usando o IntelliJ 10.5.

Steve Kuo
fonte
17
Eu ainda não consigo encontrar uma alternativa para o eclipse Ctrl + Shift + O
appbootup
16
Você já experimentou Ctrl + Alt + O? Ele adiciona automaticamente quaisquer importações exclusivas e solicita que você escolha entre importações similares pressionando Alt + Enter. FYI, eu estou usando IntelliJ 12.
premdeep divesh
6
Exceto Ctrl + Alt + O não retornará uma importação que não pode ser decidida ... Por exemplo, se houver várias importações para escolher (da qual estou tentando descobrir como selecioná-las, pois não tem o símbolo de caractere que eles sugerem no meu teclado), e ele diz: "Importação não utilizada não encontrada".
Azurespot

Respostas:

356

Ctrl+ Alt+ O( Código → Otimizar importações ... ) é o que você está procurando, tanto nos mapas de teclado do Windows / Linux quanto no macOS.

Ele diz "Otimizar", mas, se configurado para isso, também irá:

  • organizar importações existentes
  • remover importações desnecessárias
  • adicionar novas importações necessárias
  • adicione importações inequívocas em tempo real

Você pode ajustar as configurações de importação automática em " Configurações → Editor → Geral → Importação automática ", conforme descrito por Dave .

Você também pode modificar como as importações são ordenadas automaticamente em " Configurações → Editor → Estilo do código → Java → Importações "

Ryan Stewart
fonte
14
Eu continuo recebendo votos negativos transitórios, provavelmente devido a confusão. Eu atualizei a minha resposta para explicar como este não satisfazer a pergunta original.
Ryan Stewart
4
Não funciona quando os nomes dos pacotes em uma dependência foram alterados. Mesmo quando ainda é inequívoca eu tenho que clicar o ClassName bater Alt + Enter e Enter, para cada classe afetada ...
Superole
7
No Mac é CTRL + ALT + O bem (pelo menos no Android Studio 1.0)
jlapoutre
9
Acho bastante estúpido que a opção "adicionar importações inequívocas em tempo real" não esteja marcada por padrão. Quem prefere fazer isso sozinho, classe por classe?
toni07
3
Deveria ser Settings → Editor → General → Auto Import?
Steve Pitchers
100

Sob, "Settings -> Editor -> General -> Auto Import"existem várias opções sobre importações automáticas. Somente importações inequívocas podem ser adicionadas automaticamente; essa é uma das opções.

Dave Newton
fonte
Não há votos suficientes para esta resposta. Sim, a resposta de @ ryan-stewart responde totalmente à pergunta do OP, mas essa resposta fornece a solução para a pergunta que o OP não fez: como faço para corrigir isso para sempre, e não apenas para fazê-lo desta vez.
Jonathan Landrum
7
É agoraSetting > Editor -> General > Auto Import
Sorte
classes
Corrigi
não funciona no nível do pacote / pasta / projeto, funciona? Eu fiz um 'ctrl + alt + o' no projeto, src, java e fiz o teste de limpeza do mvn ... ainda tenho o símbolo 'não encontrado' para o refator recente.
old-monge
@ old-monk Funciona com o que o editor conhece; é mais provável que algo no refator esteja quebrado, mas é impossível dizer.
Dave Newton
44

Solução simples e curta funcionou para mim.

Vá para File-> Settings-> Editor-> Auto Import-> Java(painel esquerdo) e faça o seguinte: Marque a caixa de seleção para " Add unambigious imports on the fly" e " Optimize imports on the fly"

Consulte isso.

insira a descrição da imagem aqui

Rohit Mandiwal
fonte
não funciona no nível do pacote / pasta / projeto, funciona? Eu fiz um 'ctrl + alt + o' no projeto, src, java e fiz o teste de limpeza do mvn ... ainda tenho o símbolo 'não encontrado' para o refator recente.
old-monge
44

Além de Optimize Importse Auto Import, que foram apontados por @ dave-newton e @ ryan-stewart em respostas anteriores, acesse:

  • IDÉIA <= 13: File menu > Settings > Code Style > Java > Imports
  • IDEA> = 14: File menu > Settings > Editor > Code Style > Java > Imports(obrigado a @ mathias-bader pela dica!) Caixa de diálogo Configurações

Lá você pode ajustar o agrupamento e solicitar ou importar " Class count to use import with '*'", etc.

Nota:
desde IDEA 13 você pode definir as configurações padrão do projeto do IDEA "página inicial": Configure > Project defaults > Settings > .... Então, todo novo projeto terá essas configurações padrão: insira a descrição da imagem aqui

t0r0X
fonte
7
Desde IntelliJ IDEA 14, isso pode ser encontrado emSettings > Editor > Code Style > Java > Imports
Mathias Bader
@ mathias-Bader Obrigado por apontar as "configurações" páginas mudança
t0r0X
1
Parabéns pelas capturas de tela! Adoro. Um visual vale mais que 1.000 palavras!
precisa saber é o seguinte
42

Julho de 2015 - Concluí que o IntelliJ não suporta a resolução automática de importações com uma única função. "Organizar importações" simplesmente remove importações não utilizadas, não resolve tipos não importados. Control-Space resolve um único tipo não importado. Não existe uma única ação para resolver todas as importações de tipos.

Steve Kuo
fonte
11
Esta tem sido a minha experiência. Frustrante.
ayahuasca
1
Isso também me tropeçou. Veja a solução da @ rohit abaixo. Arquivo -> Configurações -> Editor -> Geral -> Importação automática -> Java e marque as três opções que ele destacou. Isso funcionou para mim.
Carl Rossman 24/03
1
É estranho que essa seja a resposta aceita, pois é altamente imprecisa. Consulte stackoverflow.com/a/8609200/839646 .
Ryan Stewart
1
@RyanStewart não resolve importações ambíguas da mesma maneira que o Eclipse. O Eclipse solicitará quando for ambíguo, o IntelliJ simplesmente o ignora.
Steve Kuo
9

navegue até o arquivo em que deseja organizar as importações ou apenas clique em todo o pacote ou clique no projeto e pressione CTRL + ALT + O

Khachatur Stepanyan
fonte
1
Esta resposta já existe . Você poderia considerar adicionar a informação extra ( "você pode clicar sobre todo o pacote ou até mesmo clicar sobre o projeto do que pressione CTRL + ALT + O") como um comentário a essa resposta
Zach Lysobey
9

No IntelliJ 14, o caminho para as configurações da Importação automática foi alterado. O caminho é

IntelliJ IDEA-> Preferências-> Editor-> Geral-> Importação Automática

siga as instruções acima, clicando em Adicionar importações inequívocas on the fly

Não consigo imaginar por que isso não seria definido por padrão.

Joe
fonte
3

Atalho para o Mac: (ctrl + opt + o)

Tiago Gaspar
fonte
1
Não, seu controle + opção + o
Deividi Cavarzan 25/04/2015
Na verdade, essa resposta é a mesma chave que a mais votada nesta questão.
Deividi Cavarzan
2

Basta passar o mouse sobre a vista que falta e pressionar as teclas no Windows ALT + ENTER

Baig
fonte
2

ALT + ENTER estava longe de ser um hábito do eclipse, na IDEA para mim o mouse não funcionava, então setting>IDESetting>Keymap>Show intention actions and quick-fixesmudei para mouse com o botão esquerdo do mouse, ele não suporta o mouse! mas o clique esquerdo do mouse estava OK e mais próximo da minha intenção.

Ali.Mojtehedy
fonte
2

Finalmente, criei uma solução alternativa para esse problema frustrante. Não estou completamente satisfeito com a solução alternativa, mas é melhor que nada.

Basicamente, depois de colar o código-fonte e as importações não ambíguas são corrigidas, basta pressionar F2para destacar o próximo erro do compilador. Se o erro atual for um erro ausente na importação, pressione Alt+Enter, Enterpara selecionar a Importopção e escolha a importação correta. Em seguida, pressione F2novamente.

Martin Vysny
fonte
1

Esse plug-in executará automaticamente a ação "organizar importação" ao salvar o arquivo: https://github.com/dubreuia/intellij-plugin-save-actions .

Para instalar: "Arquivo> Configurações> Plugins> Procurar repositórios ...> Pesquise 'Salvar ações'> Categoria 'Ferramentas de código'". Em seguida, ative a ação de salvar "organizar importação".

Alexandre DuBreuil
fonte
Julgar uma ferramenta em um recurso (ausente) pode não ser considerado um julgamento ponderado. Se o plug-in não funcionar, não hesite em preencher um bug: github.com/dubreuia/intellij-plugin-save-actions/issues .
Alexandre DuBreuil
5
Você está certo, não é um julgamento ponderado em situações normais. É - no entanto - uma frustração exalada por um recurso básico incrivelmente ausente de uma ferramenta definitiva. Passei duas horas em agonia tentando fazer com que esse recurso simples e essencial funcionasse, sem sucesso. E o que a tornou pior, ao invés de ter sido um recurso embutido por padrão (como a elegância do Eclipse), um plugin realmente precisava ser escrito para conseguir isso! É como construir o jumbo mais avançado e o mais complexo, mas sem ar-condicionado, cada passageiro recebe um ventilador de papel! Levei 1 segundo no Eclipse.
DhafirNz 4/15
1
Na verdade, o uso desse plug-in destacou um problema e uma fraqueza no IntelliJ. Eu tive que desativar esse plug-in porque ele seqüestra o IntelliJ em cada salvamento automático, tornando-o inutilizável e lento. Isso ocorre porque ele tenta executar todas as ações de salvamento sempre que digito alguma coisa. Se o salvamento automático puder ser desativado de alguma forma, esse plug-in será realmente muito útil.
DhafirNz
0

Se estiver faltando apenas uma importação (o nome da classe tem sublinhado em vermelho), clique e passe o mouse sobre ela e uma declaração de importação sugerida em azul será exibida. Se você pressionar Alt + Enter nesse momento, a importação será incluída no arquivo e o sublinhado vermelho deverá desaparecer.

Zorayr
fonte
Certeza que isso é uma característica multi-plataforma
Zach Lysobey
0

Ir para Ajuda -> Localizar Ação (Atalho para Cntl + Shift + A) e digite Otimizar importações (Atalho para Cntl + Alt + O)

Manga Rao
fonte