IntelliJ Mengatur Impor

254

Apakah IntelliJ memiliki fitur Impor Impor serupa dengan yang ada di Eclipse? Apa yang saya miliki adalah file Java dengan beberapa kelas yang hilang impor mereka. Contoh:

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

Di Eclipse saya bisa menggunakan Impor Mengatur dan itu akan secara otomatis mengimpor keduanya java.util.Mapdan javax.swing.JTable. Di IntelliJ saya harus secara individual pergi ke setiap kelas, pilih, lalu tekan Alt-Enter. Ada fitur Mengoptimalkan Impor tetapi yang tampaknya dilakukan hanyalah mengurutkan dan memperluas impor yang ada .

Saya menggunakan IntelliJ 10.5.

Steve Kuo
sumber
17
Saya masih tidak dapat menemukan alternatif untuk Ctrl + Shift + O
appbootup eclipse
16
Sudahkah Anda mencoba Ctrl + Alt + O? Secara otomatis menambahkan impor unik dan meminta Anda untuk memilih antara impor serupa dengan menekan Alt + Enter. FYI, saya menggunakan IntelliJ 12.
divesh premdeep
6
Kecuali Ctrl + Alt + O tidak akan mengembalikan impor yang tidak dapat diputuskan ... Misalnya, jika ada beberapa impor untuk dipilih (yang saya coba cari tahu bagaimana memilihnya, karena saya tidak memiliki simbol karakter yang mereka sarankan di keyboard saya), maka akan tertulis, "Impor yang tidak digunakan tidak ditemukan".
Azurespot

Jawaban:

356

Ctrl+ Alt+ O( Code → Optimize Imports ... ) adalah apa yang Anda cari, baik pada Windows / Linux dan keymaps macOS.

Itu mengatakan "Optimalkan", tetapi, jika dikonfigurasi untuk melakukannya, itu juga akan:

  • mengatur impor yang ada
  • hapus impor yang tidak dibutuhkan
  • tambahkan impor wajib baru
  • tambahkan impor yang jelas dengan cepat

Anda dapat menyetel pengaturan impor otomatis di bawah " Pengaturan → Editor → Umum → Impor Otomatis " seperti yang dijelaskan oleh Dave .

Anda juga dapat mengubah cara impor dipesan secara otomatis di bawah " Pengaturan → Editor → Gaya Kode → Java → Impor "

Ryan Stewart
sumber
14
Saya terus mendapatkan downory sementara, mungkin karena kebingungan. Saya telah memperbarui jawaban saya untuk menjelaskan bagaimana ini tidak memuaskan pertanyaan awal.
Ryan Stewart
4
Itu tidak berfungsi ketika nama paket di dependensi telah berubah. Bahkan ketika masih tidak ambigu saya harus mengklik hit ClassName Alt + Enter dan Enter, untuk setiap kelas yang terpengaruh ...
Superole
7
Di Mac, CTRL + ALT + O juga (setidaknya di Android Studio 1.0)
jlapoutre
9
Saya merasa sangat bodoh bahwa opsi "tambahkan impor yang jelas" dengan cepat tidak dicentang secara default. Siapa yang lebih suka membuatnya sendiri, kelas demi kelas?
toni07
3
Seharusnya Settings → Editor → General → Auto Import?
Steve Pitchers
100

Di bawah "Settings -> Editor -> General -> Auto Import"ada beberapa opsi mengenai impor otomatis. Hanya impor yang tidak ambigu yang dapat ditambahkan secara otomatis; ini adalah salah satu opsi.

Dave Newton
sumber
Tidak cukup suara untuk jawaban ini. Ya, jawaban @ ryan-stewart sepenuhnya menjawab pertanyaan OP, tetapi jawaban ini memberikan solusi untuk pertanyaan yang OP tidak tanyakan: bagaimana cara memperbaiki ini selamanya, bukan hanya bagaimana cara memperbaikinya kali ini.
Jonathan Landrum
7
SekarangSetting > Editor -> General > Auto Import
Lucky
Saya memperbaikinya dengan menambahkan tanda centang padaclasses
Andrea Bergonzo
itu tidak berfungsi pada tingkat paket / folder / proyek, kan? Saya melakukan 'ctrl + alt + o' pada proyek, src, java dan melakukan mvn clean test ... saya masih mendapat 'simbol not found' untuk refactor baru-baru ini.
biksu tua
@ old-monk Berfungsi dengan apa yang diketahui oleh editor; lebih mungkin sesuatu dalam refactor rusak, tetapi tidak mungkin dikatakan.
Dave Newton
44

Solusi sederhana & pendek bekerja untuk saya.

Buka File-> Settings-> Editor-> Auto Import-> Java(panel kiri) dan buat hal-hal di bawah ini: Pilih kotak centang untuk " Add unambigious imports on the fly" dan " Optimize imports on the fly"

Lihat ini.

masukkan deskripsi gambar di sini

Rohit Mandiwal
sumber
itu tidak berfungsi pada tingkat paket / folder / proyek, kan? Saya melakukan 'ctrl + alt + o' pada proyek, src, java dan melakukan mvn clean test ... saya masih mendapat 'simbol not found' untuk refactor baru-baru ini.
biksu tua
44

Selain Optimize Importsdan Auto Import, yang ditunjukkan oleh @ dave-newton dan @ ryan-stewart dalam jawaban sebelumnya, buka:

  • GAGASAN <= 13: File menu > Settings > Code Style > Java > Imports
  • IDEA> = 14: File menu > Settings > Editor > Code Style > Java > Imports(terima kasih kepada @ mathias-bader untuk petunjuknya!) Dialog pengaturan

Di sana Anda dapat mengatur pengelompokan dan memesan atau mengimpor, " Class count to use import with '*'", dll.

Catatan:
sejak IDEA 13 Anda dapat mengkonfigurasi pengaturan default proyek dari IDEA "start page": Configure > Project defaults > Settings > .... Maka setiap proyek baru akan memiliki pengaturan default itu: masukkan deskripsi gambar di sini

t0r0X
sumber
7
Sejak IntelliJ IDEA 14, ini dapat ditemukan di bawahSettings > Editor > Code Style > Java > Imports
Mathias Bader
@ mathias-bader terima kasih telah menunjukkan halaman "pengaturan" berubah
t0r0X
1
Kudos untuk tangkapan layar! Suka. Visual bernilai 1.000 kata!
atom88
42

Juli 2015 - Saya telah menyimpulkan bahwa IntelliJ tidak mendukung penyelesaian impor secara otomatis dengan satu fungsi. "Atur impor" hanya menghapus impor yang tidak digunakan, itu tidak menyelesaikan jenis yang tidak diimpor. Control-Space menyelesaikan satu jenis yang tidak diimportasi. Tidak ada tindakan tunggal untuk menyelesaikan impor semua jenis.

Steve Kuo
sumber
11
Ini adalah pengalaman saya. Membuat frustrasi.
ayahuasca
1
Ini juga membuat saya tersandung. Lihat solusi @ rohit di bawah ini. File -> Pengaturan -> Editor -> Umum -> Impor Otomatis -> Java dan periksa ketiga opsi yang telah disorot. Ini berhasil untuk saya.
Carl Rossman
1
Aneh bahwa ini adalah jawaban yang diterima, karena sangat tidak akurat. Lihat stackoverflow.com/a/8609200/839646 .
Ryan Stewart
1
@RyanStewart tidak menyelesaikan impor ambigu dengan cara yang sama seperti Eclipse. Eclipse akan meminta ketika ambigu, IntelliJ abaikan saja.
Steve Kuo
9

arahkan ke file di mana Anda ingin mengatur impor atau cukup klik pada seluruh paket atau bahkan klik pada proyek daripada menekan CTRL + ALT + O

Khachatur Stepanyan
sumber
1
Jawaban ini sudah ada . Anda dapat mempertimbangkan untuk menambahkan info tambahan ("Anda dapat mengklik seluruh paket atau bahkan mengklik proyek daripada menekan CTRL + ALT + O") sebagai komentar untuk jawaban itu
Zach Lysobey
9

Di IntelliJ 14, jalur ke pengaturan untuk Impor Otomatis telah berubah. Jalannya adalah

IntelliJ IDEA-> Preferences-> Editor-> General-> Auto Import

kemudian ikuti instruksi di atas, klik Tambah impor yang jelas

Saya tidak bisa membayangkan mengapa ini tidak diatur secara default.

Joe
sumber
3

Pintasan untuk Mac: (ctrl + opt + o)

Tiago Gaspar
sumber
1
Tidak, kontrol + opsi + o
Deividi Cavarzan
Sebenarnya jawaban ini adalah kunci yang sama dengan yang paling banyak dipilih dalam pertanyaan ini.
Deividi Cavarzan
2

Gerakkan mouse Anda ke tampilan yang hilang dan tekan tombol pada windows ALT + ENTER

Baig
sumber
2

ALT + ENTER jauh dari kebiasaan gerhana, di IDEA bagi saya mouse tidak berfungsi, jadi setting>IDESetting>Keymap>Show intention actions and quick-fixessaya mengubahnya menjadi klik kiri mouse, Tidak mendukung mouse! tetapi klik kiri mouse adalah OK dan terdekat dengan niat saya.

Ali.Mojtehedy
sumber
2

Saya akhirnya menciptakan solusi untuk masalah yang membuat frustrasi ini. Saya tidak sepenuhnya senang dengan solusinya, tetapi lebih baik daripada tidak sama sekali.

Pada dasarnya, setelah Anda menempelkan kode sumber dan impor yang ambigu diperbaiki, cukup tekan F2untuk menyorot kesalahan kompiler berikutnya. Jika kesalahan saat ini adalah kesalahan impor yang hilang, tekan Alt+Enter, lalu Enteruntuk memilih Importopsi, lalu pilih impor yang benar. Lalu, tekan F2lagi.

Martin Vysny
sumber
1

Plugin itu akan secara otomatis melakukan tindakan "mengatur impor" pada file save: https://github.com/dubreuia/intellij-plugin-save-actions .

Untuk menginstal: "File> Pengaturan> Plugins> Jelajahi repositori ...> Cari 'Simpan Tindakan'> Kategori 'Alat kode'". Kemudian aktifkan tindakan simpan "atur impor".

Alexandre DuBreuil
sumber
Menilai alat pada satu fitur (hilang) mungkin tidak dianggap sebagai penilaian yang bijaksana. Jika plugin tidak berfungsi, jangan ragu untuk mengisi bug di sana: github.com/dubreuia/intellij-plugin-save-actions/issues .
Alexandre DuBreuil
5
Anda benar, itu bukan penilaian yang bijaksana dalam situasi normal. Namun - ini adalah frustrasi yang meluap-luap pada fitur dasar yang memukau hilang dari alat utama. Saya menghabiskan 2 jam dalam penderitaan berusaha mendapatkan fitur yang sederhana dan penting ini untuk bekerja, tanpa hasil. Dan apa yang membuatnya lebih buruk, daripada menjadi fitur bawaan secara default (seperti bagaimana Eclipse melakukannya dengan elegan) sebuah plugin benar-benar perlu ditulis untuk mencapainya! Ini seperti membangun keadaan seni dan jet jumbo paling rumit tetapi tanpa AC, sebaliknya, setiap penumpang diberikan kipas kertas! Butuh waktu 1 detik di Eclipse.
DhafirNz
1
Sebenarnya, menggunakan plug-in ini menyoroti masalah dan kelemahan di IntelliJ. Saya harus menonaktifkan plug-in ini karena membajak IntelliJ di setiap penyimpanan otomatis, menjadikannya tidak dapat digunakan dan lambat. Ini karena ia mencoba melakukan semua tindakan simpan setiap saya mengetik sesuatu. Jika penyimpanan otomatis dapat dimatikan, maka plug-in ini akan sangat berguna.
DhafirNz
0

Jika Anda kehilangan hanya satu impor (nama kelas memiliki garis bawah merah), klik dan arahkan mouse di atasnya, dan pernyataan impor yang disarankan berwarna biru akan muncul. Jika Anda menekan, Alt + Enter pada titik ini, impor akan dimasukkan dalam file dan garis bawah merah akan hilang.

Zorayr
sumber
Cukup yakin ini adalah fitur multi-platform
Zach Lysobey
0

Bantuan Goto -> Cari Tindakan (Pintasan untuk ini adalah Cntl + Shift + A) dan ketik Optimalkan impor (Pintasan untuk ini adalah Cntl + Alt + O)

Manga Rao
sumber