IntelliJ Importe organisieren

254

Verfügt IntelliJ über eine ähnliche Funktion zum Importieren von Importen wie in Eclipse? Was ich habe, ist eine Java-Datei mit mehreren Klassen, deren Importe fehlen. Beispiel:

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

In Eclipse könnte ich Importe organisieren verwenden und es würde automatisch sowohl java.util.Mapund importieren javax.swing.JTable. In IntelliJ muss ich einzeln zu jeder Klasse gehen, sie auswählen und dann Alt-Enter drücken. Es gibt eine Funktion zum Importieren von Importen, aber alles, was es zu tun scheint, ist, die vorhandenen Importe zu sortieren und zu erweitern .

Ich verwende IntelliJ 10.5.

Steve Kuo
quelle
17
Ich kann immer noch keine Alternative zu Eclipse's Strg + Umschalt + O
Appbootup
16
Haben Sie Strg + Alt + O ausprobiert? Es fügt automatisch alle eindeutigen Importe hinzu und fordert Sie auf, zwischen ähnlichen Importen zu wählen, indem Sie Alt + Eingabetaste drücken. Zu
Ihrer Information
6
Außer dass Strg + Alt + O keinen Import zurückgibt, über den es nicht entscheiden kann ... Zum Beispiel, wenn mehrere Importe zur Auswahl stehen (und ich versuche herauszufinden, wie man sie auswählt, da ich dies nicht tue habe das Zeichensymbol, das sie auf meiner Tastatur vorschlagen), dann heißt es "Nicht verwendeter Import nicht gefunden".
Azurespot

Antworten:

356

Ctrl+ Alt+ O( - Code → Optimieren Import ... ) ist das, was Sie sowohl auf Windows / Linux und Mac OS keymaps suchen.

Es heißt "Optimieren", aber wenn es dafür konfiguriert ist, wird es auch:

  • Bestehende Importe organisieren
  • Entfernen Sie nicht benötigte Importe
  • neue erforderliche Importe hinzufügen
  • eindeutige Importe im laufenden Betrieb hinzufügen

Sie können die Einstellungen für den automatischen Import unter " Einstellungen → Editor → Allgemein → Automatischer Import " wie von Dave beschrieben anpassen .

Sie können auch ändern, wie die Importe automatisch sortiert werden, unter " Einstellungen → Editor → Codestil → Java → Importe ".

Ryan Stewart
quelle
14
Ich bekomme immer wieder vorübergehende Abstimmungen, wahrscheinlich aufgrund von Verwirrung. Ich habe meine Antwort aktualisiert zu erklären , wie dies nicht die ursprüngliche Frage zu befriedigen.
Ryan Stewart
4
Es funktioniert nicht, wenn sich Paketnamen in einer Abhängigkeit geändert haben. Auch wenn es noch eindeutig ist, muss ich für jede betroffene Klasse auf den Klassennamen Alt + Enter und Enter klicken ...
Superole
7
Auf dem Mac ist es auch STRG + ALT + O (zumindest in Android Studio 1.0)
jlapoutre
9
Ich finde es ziemlich dumm, dass die Option "eindeutige Importe im laufenden Betrieb hinzufügen" nicht standardmäßig aktiviert ist. Wer macht das lieber selbst, Klasse für Klasse?
Toni07
3
Sollte sein Settings → Editor → General → Auto Import?
Steve Pitchers
100

Unter "Settings -> Editor -> General -> Auto Import"gibt es mehrere Optionen für automatische Importe. Es dürfen nur eindeutige Importe automatisch hinzugefügt werden. Dies ist eine der Optionen.

Dave Newton
quelle
Nicht genug Up-Votes für diese Antwort. Ja, die Antwort von @ ryan-stewart beantwortet die Frage des OP vollständig, aber diese Antwort bietet die Lösung für die Frage, die das OP nicht gestellt hat: Wie behebe ich das für immer, nicht nur wie behebe ich es dieses Mal?
Jonathan Landrum
7
Es ist jetztSetting > Editor -> General > Auto Import
Lucky
Ich habe das classes
Problem
es funktioniert nicht auf Paket- / Ordner- / Projektebene, oder? Ich habe ein 'Strg + Alt + O' für Projekt, Src, Java gemacht und mvn Clean Test gemacht ... Ich habe immer noch 'Symbol nicht gefunden' für den letzten Refactor.
alter Mönch
@ old-monk Es funktioniert mit dem, was der Herausgeber weiß; Es ist wahrscheinlicher, dass etwas im Refaktor kaputt ist, aber unmöglich zu sagen.
Dave Newton
44

Einfache und kurze Lösung hat bei mir funktioniert.

Gehen Sie zu File-> Settings-> Editor-> Auto Import-> Java(linkes Feld) und führen Sie die folgenden Schritte aus: Aktivieren Sie das Kontrollkästchen für " Add unambigious imports on the fly" und " Optimize imports on the fly".

Verweisen Sie darauf.

Geben Sie hier die Bildbeschreibung ein

Rohit Mandiwal
quelle
es funktioniert nicht auf Paket- / Ordner- / Projektebene, oder? Ich habe ein 'Strg + Alt + O' für Projekt, Src, Java gemacht und mvn Clean Test gemacht ... Ich habe immer noch 'Symbol nicht gefunden' für den letzten Refactor.
alter Mönch
44

Zusätzlich zu Optimize Importsund Auto Import, auf die @ dave-newton und @ ryan-stewart in früheren Antworten hingewiesen haben, gehen Sie zu:

  • IDEE <= 13: File menu > Settings > Code Style > Java > Imports
  • IDEA> = 14: File menu > Settings > Editor > Code Style > Java > Imports(danke an @ mathias-bader für den Hinweis!) Einstellungsdialog

Dort können Sie die Gruppierung und Reihenfolge oder Importe, " Class count to use import with '*'" usw. fein abstimmen .

Hinweis:
Seit IDEA 13 können Sie die Standardeinstellungen des Projekts auf der IDEA-Startseite konfigurieren : Configure > Project defaults > Settings > .... Dann hat jedes neue Projekt die Standardeinstellungen: Geben Sie hier die Bildbeschreibung ein

t0r0X
quelle
7
Seit IntelliJ IDEA 14 finden Sie diese unterSettings > Editor > Code Style > Java > Imports
Mathias Bader
@ Mathias-Bader danke für den Hinweis auf die "Einstellungen" Seiten ändern
t0r0X
1
Ein großes Lob für die Screenshots! Liebe es. Ein Bild sagt mehr als 1.000 Worte!
Atom88
42

Juli 2015 - Ich bin zu dem Schluss gekommen, dass IntelliJ das automatische Auflösen von Importen mit einer einzigen Funktion nicht unterstützt. "Importe organisieren" entfernt einfach nicht verwendete Importe und löst nicht importierte Typen nicht auf. Control-Space löst einen einzelnen nicht importierten Typ auf. Es gibt keine einzige Aktion zum Auflösen der Importe aller Typen.

Steve Kuo
quelle
11
Das war meine Erfahrung. Frustrierend.
Ayahuasca
1
Das hat mich auch gestolpert. Siehe die Lösung von @ rohit weiter unten. Datei -> Einstellungen -> Editor -> Allgemein -> Autoimport -> Java und überprüfen Sie alle drei von ihm hervorgehobenen Optionen. Das hat bei mir funktioniert.
Carl Rossman
1
Seltsam, dass dies die akzeptierte Antwort ist, da sie sehr ungenau ist. Siehe stackoverflow.com/a/8609200/839646 .
Ryan Stewart
1
@RyanStewart löst mehrdeutige Importe nicht wie Eclipse auf. Eclipse fordert Sie auf, wenn es nicht eindeutig ist. IntelliJ ignoriert es einfach.
Steve Kuo
9

Navigieren Sie zu der Datei, in der Sie Importe organisieren möchten, oder klicken Sie einfach auf das gesamte Paket oder sogar auf das Projekt, und drücken Sie dann STRG + ALT + O.

Khachatur Stepanyan
quelle
1
Diese Antwort existiert bereits . Sie können die zusätzlichen Informationen ("Sie können auf das gesamte Paket klicken oder sogar auf das Projekt klicken, als STRG + ALT + O drücken") als Kommentar zu dieser Antwort
hinzufügen
9

In IntelliJ 14 hat sich der Pfad zu den Einstellungen für den automatischen Import geändert. Der Weg ist

IntelliJ IDEA-> Einstellungen-> Editor-> Allgemein-> Auto-Import

Folgen Sie dann den obigen Anweisungen und klicken Sie im laufenden Betrieb auf Eindeutige Importe hinzufügen

Ich kann mir nicht vorstellen, warum dies nicht standardmäßig eingestellt ist.

Joe
quelle
3

Verknüpfung für den Mac: (Strg + Opt + O)

Tiago Gaspar
quelle
1
Nein, seine Kontrolle + Option + o
Deividi Cavarzan
Tatsächlich entspricht diese Antwort den Schlüsseln, die in dieser Frage am häufigsten gewählt wurden.
Deividi Cavarzan
2

Bewegen Sie einfach Ihre Maus über die fehlende Ansicht und drücken Sie die Tasten in den Fenstern ALT + ENTER

Baig
quelle
2

ALT + ENTER war weit entfernt von der Gewohnheit der Sonnenfinsternis, in IDEA funktionierte Mouse Over nicht, also setting>IDESetting>Keymap>Show intention actions and quick-fixesänderte ich es in Mouse Left Click. Es unterstützte Mouse Over nicht! Aber ein Mausklick mit der linken Maustaste war in Ordnung und meiner Absicht am nächsten.

Ali.Mojtehedy
quelle
2

Ich habe endlich eine Problemumgehung für dieses frustrierende Problem erstellt. Ich bin mit der Problemumgehung nicht ganz zufrieden, aber es ist besser als nichts.

Nachdem Sie den Quellcode eingefügt und eindeutige Importe behoben haben, drücken Sie einfach F2, um den nächsten Compilerfehler hervorzuheben. Wenn es sich bei dem aktuellen Fehler um einen fehlenden Importfehler handelt, drücken Sie Alt+Enter, Enterum die ImportOption auszuwählen , und wählen Sie dann den richtigen Import aus. Drücken Sie dann F2erneut.

Martin Vysny
quelle
1

Dieses Plugin führt beim Speichern der Datei automatisch die Aktion "Import organisieren" aus: https://github.com/dubreuia/intellij-plugin-save-actions .

So installieren Sie: "Datei> Einstellungen> Plugins> Repositorys durchsuchen ...> Suche nach 'Aktionen speichern'> Kategorie 'Code-Tools'". Aktivieren Sie dann die Speicheraktion "Import organisieren".

Alexandre DuBreuil
quelle
Die Beurteilung eines Werkzeugs anhand eines (fehlenden) Merkmals wird möglicherweise nicht als nachdenkliche Beurteilung angesehen. Wenn das Plugin nicht funktioniert, zögern Sie nicht, dort einen Fehler zu beheben : github.com/dubreuia/intellij-plugin-save-actions/issues .
Alexandre DuBreuil
5
Sie haben Recht, es ist in normalen Situationen kein nachdenkliches Urteil. Es ist jedoch eine entlüftete Frustration über eine erstaunlich fehlende Grundfunktion eines ultimativen Werkzeugs. Ich verbrachte 2 Stunden in Qualen, um zu versuchen, diese einfache, wesentliche Funktion zum Laufen zu bringen, ohne Erfolg. Und was es noch schlimmer machte, anstatt standardmäßig eine eingebaute Funktion zu sein (wie es Eclipse elegant macht), musste wirklich ein Plugin geschrieben werden, um dies zu erreichen! Es ist, als würde man einen hochmodernen und komplexesten Jumbo-Jet bauen, aber ohne Klimaanlage. Stattdessen erhält jeder Passagier einen Papierfächer! In Eclipse habe ich 1 Sekunde gebraucht.
DhafirNz
1
Die Verwendung dieses Plug-Ins hat tatsächlich ein Problem und eine Schwachstelle in IntelliJ hervorgehoben. Ich musste dieses Plug-In deaktivieren, da es IntelliJ bei jedem automatischen Speichern entführt und es unbrauchbar und langsam macht. Dies liegt daran, dass versucht wird, alle Speicheraktionen auszuführen, wenn ich etwas eingebe. Wenn das automatische Speichern irgendwie deaktiviert werden kann, ist dieses Plug-In in der Tat sehr nützlich.
DhafirNz
0

Wenn Sie nur einen Import vermissen (der Klassenname ist rot unterstrichen), klicken Sie mit der Maus darüber und bewegen Sie den Mauszeiger darüber. Daraufhin wird eine blau vorgeschlagene Importanweisung angezeigt. Wenn Sie an dieser Stelle Alt + Eingabetaste drücken, wird der Import in die Datei aufgenommen und die rote Unterstreichung sollte verschwinden.

Zorayr
quelle
Ziemlich sicher, dass dies eine Multi-Plattform-Funktion ist
Zach Lysobey
0

Gehen Sie zur Hilfe -> Aktion suchen (Abkürzung hierfür ist Strg + Umschalt + A) und geben Sie Importe optimieren ein (Abkürzung hierfür ist Strg + Alt + O).

Manga Rao
quelle