IntelliJ Organize İthalat


254

IntelliJ'in Eclipse ile benzer bir Organize İthalat özelliği var mı? Ne var birden fazla sınıf ithalat eksik eksik bir Java dosyası. Misal:

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

Eclipse ben İthalat Organize kullanabilir ve otomatik hem içe olur java.util.Mapve javax.swing.JTable. IntelliJ'de her sınıfa ayrı ayrı gitmem, onu seçmem ve ardından Alt-Enter tuşuna basmam gerekiyor. İçe Aktarmayı Optimize Et özelliği vardır, ancak tek yaptığı mevcut ithalatı sıralamak ve genişletmektir .

IntelliJ 10.5 kullanıyorum.


17
Tutulmanın Ctrl + ÜstKrktr +
O'suna

16
Ctrl + Alt + O tuşlarını denediniz mi? Benzersiz içe aktarmaları otomatik olarak ekler ve Alt + Enter tuşlarına basarak benzer ithalatlar arasında seçim yapmanızı ister. Bilginize, IntelliJ 12 kullanıyorum.
divesh premdeep

6
Ctrl + Alt + O hariç, karar veremediği bir içe aktarma döndürmez ... Örneğin, aralarından seçim yapabileceğiniz birden fazla ithalat varsa (ki bunları nasıl seçeceğimi anlamaya çalışıyorum) klavyemde önerdikleri karakter sembolüne sahipse), "Kullanılmayan içe aktarma bulunamadı" diyecek.
Azurespot

Yanıtlar:


356

Ctrl+ Alt+ O( Kod → İçe Aktarmayı Optimize Et ... ), Windows / Linux ve macOS tuş haritalarında aradığınız şeydir.

"En İyileştir" yazıyor, ancak bunun için yapılandırılmışsa, ayrıca:

  • mevcut ithalatı düzenlemek
  • gereksiz ithalatı kaldır
  • yeni gerekli ithalatları ekleyin
  • anında net ithalat ekleyin

Otomatik içe aktarma ayarlarını Dave tarafından açıklandığı gibi " Ayarlar → Düzenleyici → Genel → Otomatik İçe Aktar " altında ayarlayabilirsiniz .

Ayrıca, içe aktarma işlemlerinin otomatik olarak nasıl sıralanacağını " Ayarlar → Düzenleyici → Kod Stili → Java → İçe Aktarmalar " altında değiştirebilirsiniz.


14
Muhtemelen karışıklıktan dolayı geçici inişler almaya devam ediyorum. Bunu nasıl açıklamak için benim cevap güncelledik gelmez orijinal soruyu tatmin.
Ryan Stewart

4
Bağımlılıktaki paket adları değiştiğinde çalışmaz. Hala açık olsa bile, etkilenen her sınıf için ClassName isabet Alt + Enter ve Enter tuşlarına
tıklamam gerekiyor

7
Mac'te de CTRL + ALT + O (en azından Android Studio 1.0'da)
jlapoutre

9
"Anında açık ithalat eklemek" seçeneğinin varsayılan olarak işaretlenmediğini oldukça aptal buluyorum. Kim bunu tek başına sınıfta yapmayı tercih ediyor?
toni07

3
Olmalı mı Settings → Editor → General → Auto Import?
Steve Pitchers

100

Altında "Settings -> Editor -> General -> Auto Import"otomatik ithalat ile ilgili çeşitli seçenekler var. Yalnızca net içe aktarmalar otomatik olarak eklenebilir; bu seçeneklerden biri.


Bu cevap için yeterli oy yok. Evet, @ ryan-stewart'ın cevabı OP'nin sorusunu tam olarak cevaplıyor, ancak bu cevap OP'nin sormadığı soruya çözüm sunuyor: bunu bir kez nasıl düzeltebilirim, nasıl sonsuza kadar düzeltirim.
Jonathan Landrum

7
ŞimdiSetting > Editor -> General > Auto Import
Şanslı

Çek ekleyerek düzeltildiclasses
Andrea Bergonzo

paket / klasör / proje düzeyinde çalışmaz, değil mi? Projede bir 'ctrl + alt + o' yaptım, src, java ve mvn temiz testi yaptım ... hala son refactor için 'sembol bulunamadı' var.
old-monk

@ old-monk Editörün bildikleriyle çalışır; refactordaki bir şeyin kırılması daha muhtemeldir, ancak söylemesi imkansızdır.
Dave Newton

44

Basit ve kısa çözüm benim için çalıştı.

Git File> - Settings-> Editor-> Auto Import-> Java(sol panelde) ve şeylerin altına olun: "için seç onay kutusunu Add unambigious imports on the fly" ve " Optimize imports on the fly"

Şuna bakın.

resim açıklamasını buraya girin


paket / klasör / proje düzeyinde çalışmaz, değil mi? Projede bir 'ctrl + alt + o' yaptım, src, java ve mvn temiz testi yaptım ... hala son refactor için 'sembol bulunamadı' var.
old-monk

44

Önceki yanıtlarda @ dave-newton ve @ ryan-stewart tarafından belirtilen Optimize Importsve ek olarak Auto Import, şu adrese gidin:

  • IDEA <= 13: File menu > Settings > Code Style > Java > Imports
  • IDEA> = 14: File menu > Settings > Editor > Code Style > Java > Imports(ipucu için @ mathias-bader sayesinde!) Ayarlar iletişim kutusu

Orada gruplama ve sipariş veya ithalat, " Class count to use import with '*'" vb. İnce ayar yapabilirsiniz .

Not:
IDEA 13 sen IDEA gelen proje varsayılan ayarları yapılandırabilirsiniz beri "sayfasını start": Configure > Project defaults > Settings > .... Sonra her yeni proje şu varsayılan ayarlara sahip olacaktır: resim açıklamasını buraya girin


7
IntelliJ IDEA 14'ten bu yanaSettings > Editor > Code Style > Java > Imports
Mathias Bader

@ mathias-bader "Ayarlar" sayfalarının değiştiğine işaret ettiğiniz için teşekkürler
t0r0X

1
Ekran görüntüleri için Şeref! Sevdim. Bir görsel 1.000 kelimeye bedeldir!
atom88

42

Temmuz 2015 - IntelliJ'in ithalatı tek bir işlevle otomatik olarak çözmeyi desteklemediği sonucuna vardım. "İthalatları düzenle" sadece kullanılmayan ithalatları kaldırır, ithal edilmemiş türleri çözmez. Control-Space tek bir içe aktarılmamış türü çözer. Tüm türlerin ithalatını çözmek için tek bir işlem yoktur.


11
Bu benim deneyimim oldu. Sinir bozucu.
ayahuasca

1
Bu da beni harekete geçirdi. Aşağıdaki @ rohit çözümüne bakın. Dosya -> Ayarlar -> Editör -> Genel -> Otomatik İçe Aktar -> Java'yı seçin ve vurguladığı üç seçeneği de işaretleyin. Bu benim için çalıştı.
Carl Rossman

1
Çok yanlış olduğu için bunun kabul edilen cevap olması tuhaf. Bkz. Stackoverflow.com/a/8609200/839646 .
Ryan Stewart

1
@RyanStewart, belirsiz ithalatları Eclipse'nin yaptığı gibi çözmez. Eclipse belirsiz olduğu zaman uyarır, IntelliJ bunu görmezden gelir.
Steve Kuo

9

ithalat düzenlemek istediğiniz dosyaya gidin ya da CTRL + ALT + O tuşlarına basmak yerine tüm paketi tıklayın, hatta projeyi tıklayın


1
Bu cevap zaten var . Sen olabilir o cevaba yorum olarak ekstra bilgi ( "Sen bütün paketi tıklayabilir veya hatta CTRL + ALT + O daha proje üzerinde tıklayabilirsiniz") eklemeyi düşünün
Zach Lysobey

9

IntelliJ 14'te, Otomatik İçe Aktarma ayarlarının yolu değişti. Yol

IntelliJ IDEA-> Tercihler-> Editör-> Genel-> Otomatik Alma

ardından anında talimatları izleyin ve anında anında içe aktarma ekle'yi tıklayın

Bunun neden varsayılan olarak ayarlanmayacağını hayal edemiyorum.



2

Farenizi eksik görünümün üzerine getirin ve pencerelerde tuşlara basın ALT + ENTER


2

ALT + ENTER tutulması alışkanlığından uzaktı, benim için IDEA'da fare üzerinde çalışmadı, bu yüzden setting>IDESetting>Keymap>Show intention actions and quick-fixesfarenin sol tıklaması olarak değiştirdim, fareyi desteklemedi! ancak farenin sol tıklaması iyiydi ve niyetime en yakın.


2

Sonunda bu sinir bozucu sorunun etrafında bir geçici çözüm oluşturdum. Geçici çözümden tamamen memnun değilim, ama hiç yoktan iyidir.

Temel olarak, kaynak kodunu yapıştırdıktan ve net olmayan içe aktarmalar düzeltildikten sonra F2, bir sonraki derleyici hatasını vurgulamak için düğmesine basın . Geçerli hata bir içe aktarma eksik hatasıysa Alt+Enter, seçeneği Enterbelirlemek için önce düğmesine , ardından Importdoğru içe aktarmayı seçin. Ardından, düğmesine F2tekrar basın .


1

Bu eklenti otomatik olarak dosya kaydetme işleminde "içe aktarmayı organize et" işlemini gerçekleştirir: https://github.com/dubreuia/intellij-plugin-save-actions .

Yüklemek için: "Dosya> Ayarlar> Eklentiler> Depolara gözat ...>" İşlemleri Kaydet "> Kategori" Kod araçları "nı ara". Ardından "içe aktarmayı organize et" kaydetme işlemini etkinleştirin.


Bir aracı bir (eksik) özelliğe göre değerlendirmek, düşünceli bir yargı olarak görülmeyebilir. Eklenti çalışmazsa, oradaki bir hatayı doldurmaktan çekinmeyin: github.com/dubreuia/intellij-plugin-save-actions/issues .
Alexandre DuBreuil

5
Haklısın, normal durumlarda düşünceli bir yargı değil. Bununla birlikte, nihai bir araçtan şaşırtıcı derecede eksik bir temel özellik üzerinde havalandırılmış bir hayal kırıklığıdır. Bu basit, vazgeçilmez özelliği başarılı bir şekilde elde etmeye çalışırken 2 saat acı içinde geçirdim. Ve bunu daha da kötüleştiren, varsayılan olarak yerleşik bir özellik olmaktan ziyade (Eclipse'nin ne kadar zarif yaptığı gibi) bunu başarmak için gerçekten bir eklentinin yazılması gerekiyordu! Onun gibi bir sanat devlet ve en karmaşık jumbo jet ama klima olmadan, bunun yerine, her yolcu bir kağıt fan verilir! Eclipse'de 1 saniye sürdü.
DhafirNz

1
Aslında, bu eklentinin kullanılması IntelliJ'de bir sorun ve zayıflık olduğunu vurguladı. Bu eklentiyi devre dışı bırakmak zorunda kaldım çünkü IntelliJ'i her otomatik kaydetmede ele geçirerek kullanılamaz ve yavaş hale getiriyor. Bunun nedeni, her yazdığım tüm kaydetme eylemlerini yapmaya çalışmasıdır. Otomatik kaydetme bir şekilde kapatılabilirse, bu eklenti gerçekten çok yararlı olacaktır.
DhafirNz

0

Yalnızca bir içe aktarma eksikse (sınıf adının kırmızı alt çizgisi vardır), fareyi tıklayıp üzerine getirin ve önerilen mavi içe aktarma ifadesi görünür. Eğer vurursanız, Alt + Enter Bu noktada, ithalat dosyasına dahil edilecek ve kırmızı alt çizgi kaybolur.


Çok platformlu bir özellik olduğuna eminim
Zach Lysobey

0

Yardım'a Git -> Eylem Bul (Bunun için Kısayol Cntl + Üst Karakter + A) ve İçe aktarmayı optimize et yazın (Bunun için kısayol Cntl + Alt + O)

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.