Організація імпорту IntelliJ


254

Чи IntelliJ має функцію «Організувати імпорт», подібну до програми Eclipse? У мене є файл Java з декількома класами, на яких відсутній імпорт. Приклад:

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

У програмі Eclipse я міг би використовувати «Організувати імпорт», і він автоматично імпортував і « java.util.Mapі» javax.swing.JTable. В IntelliJ я повинен індивідуально перейти до кожного класу, вибрати його, а потім натиснути Alt-Enter. Існує функція оптимізації імпорту, але все, що здається, це сортування та розширення існуючого імпорту.

Я використовую IntelliJ 10.5.


17
Я досі не можу знайти альтернативу Ctrl + Shift + O
eclipse

16
Ви пробували Ctrl + Alt + O? Він автоматично додає будь-який унікальний імпорт і спонукає вибирати між подібними імпортами, натискаючи Alt + Enter. FYI, я використовую IntelliJ 12.
divesh premdeep

6
За винятком того, що Ctrl + Alt + O не поверне імпорт, на який він не може визначитися ... Наприклад, якщо на вибір є кілька імпортів (з яких я намагаюся розібратися, як їх вибрати, оскільки я не мати символ символів, який вони пропонують на моїй клавіатурі), тоді він буде говорити: "Невикористаний імпорт не знайдено".
Azurespot

Відповіді:


356

Ctrl+ Alt+ O( Код → Оптимізувати імпорт ... ) - це те, що ви шукаєте, як у клавіатурах Windows / Linux, так і в macOS.

На ньому написано "Оптимізувати", але якщо налаштовано так, воно також:

  • організувати існуючий імпорт
  • видалити непотрібний імпорт
  • додати новий необхідний імпорт
  • додайте однозначний імпорт на ходу

Ви можете налаштувати параметри автоматичного імпортування в розділі " Налаштування → Редактор → Загальні → Автоматичний імпорт ", як описано в Dave .

Ви також можете змінити спосіб упорядкування імпорту в розділі " Налаштування → Редактор → Стиль коду → Java → Імпорт "


14
Я продовжую отримувати тимчасові низовини, ймовірно, через плутанину. Я оновив свій відповідь , щоб пояснити , як це робить задовольнити первісний питання.
Райан Стюарт

4
Це не працює, коли назви пакетів у залежності змінилися. Навіть коли це все однозначно, я повинен натиснути клавішу клацання клавіші Alt + Enter і Enter для кожного зачепленого класу ...
Superole

7
На Mac це CTRL + ALT + O (принаймні в Android Studio 1.0)
jlapoutre

9
Я вважаю досить дурним те, що опція "додати однозначний імпорт на льоту" не перевіряється за замовчуванням. Хто вважає за краще зробити це сам, клас за класом?
toni07

3
Повинно бути Settings → Editor → General → Auto Import?
Стів Пітчерс

100

Нижче "Settings -> Editor -> General -> Auto Import"існує кілька варіантів автоматичного імпорту. Лише однозначний імпорт може бути доданий автоматично; це один із варіантів.


Для цієї відповіді недостатньо голосів. Так, відповідь @ ryan-stewart повністю відповідає на питання ОП, але ця відповідь забезпечує вирішення питання, яке ОП не запитувало: як це я виправити назавжди, а не лише як я це виправити один раз.
Джонатан Ландрум

7
ЗаразSetting > Editor -> General > Auto Import
Lucky

Я зафіксував це, додавши чекclasses
Андреа Бергонцо

це не працює на рівні пакету / папки / проекту, чи не так? Я зробив 'ctrl + alt + o' для проекту, src, java та зробив mvn чистий тест ... я все одно отримав "символ не знайдений" для недавнього рефактора.
старець-монах

@ old-monk Це працює з тим, що знає редактор; скоріше щось порушено в рефакторі, але неможливо сказати.
Дейв Ньютон

44

Просте і коротке рішення працювало для мене.

Перейдіть до File-> Settings-> Editor-> Auto Import-> Java(ліва панель) і зробіть наступні речі: Установіть прапорці для " Add unambigious imports on the fly" і " Optimize imports on the fly"

Зверніться до цього.

введіть тут опис зображення


це не працює на рівні пакету / папки / проекту, чи не так? Я зробив 'ctrl + alt + o' для проекту, src, java та зробив mvn чистий тест ... я все одно отримав "символ не знайдений" для недавнього рефактора.
старець-монах

44

У доповненні до Optimize Importsі Auto Import, які були вказані на @ DAVE-ньютон і @ Райан-Стюарт у попередніх відповідях, перейдіть за посиланням:

  • IDEA <= 13: File menu > Settings > Code Style > Java > Imports
  • IDEA> = 14: File menu > Settings > Editor > Code Style > Java > Imports(спасибі @ mathias-bader за підказку!) Діалогове вікно налаштувань

Там ви можете точно налаштувати групування та замовлення чи імпорт, " Class count to use import with '*'" тощо.

Примітка:
оскільки IDEA 13 можна налаштувати параметри проекту по замовчуванням з IDEA «стартова сторінка»: Configure > Project defaults > Settings > .... Тоді кожен новий проект матиме ці налаштування за замовчуванням: введіть тут опис зображення


7
Оскільки IntelliJ IDEA 14, це можна знайти у розділіSettings > Editor > Code Style > Java > Imports
Матіас Бадер

@ mathias-bader дякую, що вказав на зміну сторінок "налаштування"
t0r0X

1
Кудо для знімків екрану! Любіть це. Візуал вартує 1000 слів!
atom88

42

Липень 2015 - Я дійшов висновку, що IntelliJ не підтримує автоматичне вирішення імпорту за допомогою однієї функції. "Організувати імпорт" просто видаляє невикористаний імпорт, він не вирішує неімпортні типи. Контрольний простір вирішує єдиний неімпортний тип. Не існує жодної дії для вирішення імпорту всіх типів.


11
Це був мій досвід. Розчарування.
аяуаска

1
Це також мене спалохало. Дивіться рішення @ rohit нижче. Файл -> Налаштування -> Редактор -> Загальне -> Авто імпорт -> Java та перевірте всі три варіанти, які він виділив. Це працювало для мене.
Карл Россман

1
Як не дивно, що це прийнята відповідь, оскільки вона є дуже неточною. Дивіться stackoverflow.com/a/8609200/839646 .
Райан Стюарт

1
@RyanStewart не вирішує неоднозначний імпорт так само, як це робить Eclipse. Eclipse підкаже, коли це неоднозначно, IntelliJ просто ігнорує його.
Стів Куо

9

перейдіть до файлу, де ви хочете організувати імпорт, або просто натисніть на весь пакет або навіть натисніть на проект, ніж натисніть CTRL + ALT + O


1
Ця відповідь вже існує . Ви можете розглянути можливість додавання додаткової інформації ("ви можете натиснути на весь пакет або навіть натиснути на проект, ніж натиснути CTRL + ALT + O") як коментар до цієї відповіді
Зах Лісобей

9

У IntelliJ 14 шлях до налаштувань для автоматичного імпорту змінився. Шлях є

IntelliJ IDEA-> Налаштування-> Редактор-> Загальні-> Імпорт

потім виконайте наведені вище інструкції, натиснувши Додати однозначний імпорт на ходу

Я не уявляю, чому це не було б встановлено за замовчуванням.



2

Просто переведіть курсор миші на відсутній вигляд і натисніть клавіші на вікнах ALT + ENTER


2

ALT + ENTER був далеким від звички затемнення, в IDEA для мене миша не працювала, тому setting>IDESetting>Keymap>Show intention actions and quick-fixesя змінив його на клацання лівою кнопкою миші, він не підтримував курсор миші! але клацання лівою кнопкою миші було в порядку і найближче до мого наміру.


2

Нарешті я створив обхід навколо цієї неприємної проблеми. Я не зовсім задоволений обхідним шляхом, але це краще, ніж нічого.

По суті, після вставки вихідного коду і виправлення однозначного імпорту просто натисніть, F2щоб виділити наступну помилку компілятора. Якщо поточна помилка - помилка відсутності імпорту, натисніть Alt+Enter, а потім Enterвиберіть Importваріант, а потім виберіть правильний імпорт. Потім натисніть F2ще раз.


1

Цей плагін автоматично виконає дію "організувати імпорт" для збереження файлів: https://github.com/dubreuia/intellij-plugin-save-action .

Щоб встановити: "Файл> Налаштування> Плагіни> Огляд сховищ ...> Пошук" Зберегти дії "> Категорія" Інструменти коду "". Потім активуйте дію збереження "організувати імпорт".


Судити про інструмент по одній (відсутній) функції може не розглядатися як продумане судження. Якщо плагін не працює, не соромтеся заповнити помилку там: github.com/dubreuia/intellij-plugin-save-action/isissue .
Олександр ДюБрей

5
Ви маєте рацію, це не продумане судження в нормальних ситуаціях. Це, однак, - враховане розчарування на приголомшливо відсутній основній рисі від остаточного інструменту. Я провів 2 години в агонії, намагаючись змусити цю просту, важливу особливість працювати без успіху. І що стало гірше, а не тим, що за замовчуванням була вбудована функція (як, наскільки елегантно це робить Eclipse), щоб досягти цього потрібно плагін! Це як побудова найсучаснішого і найскладнішого джембо-джета, але без кондиціонера, натомість кожному пасажиру надають вентилятор паперу! У затьмаренні мені знадобилося 1 сек.
DhafirNz

1
Насправді, використовуючи цей плагін, виділено проблему та слабкість у IntelliJ. Мені довелося вимкнути цей плагін, оскільки він викрадає IntelliJ під час кожного автоматичного збереження, роблячи його непридатним та повільним. Це тому, що вона намагається виконувати всі збережені дії, коли я щось набираю. Якщо автозбереження можна якось відключити, цей плагін справді буде дуже корисним.
DhafirNz

0

Якщо вам не вистачає лише одного імпорту (у назві класу є червоне підкреслення), клацніть на ньому та наведіть на нього курсор миші, і з’явиться синя запропонована заява про імпорт. Якщо ви натиснете Alt + Enter у цей момент, імпорт буде включений у файл, і червоне підкреслення має зникнути.


Досить впевнений, що це багатоплатформна функція
Zach Lysobey

0

Перейти довідка -> Знайти дію (скорочення для цього - Cntl + Shift + A) та введіть Оптимізувати імпорт (скорочення для цього - Cntl + Alt + O)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.