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.


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 "


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.


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


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


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.


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


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.



2

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


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.


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.


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


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.


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)

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.