9

My current system(MacOS 10.10.5) configuration is :

IntelliJ IDEA 2017.2.2
#Built on 9August,2017

java version "9"
Java(TM) SE Runtime Environment (build 9+181)

Every time I start working on a project(currently 1.8.0_65) and write a class using

List<String> example = new ArrayList<>(); 

=> If I click on the auto suggested tip for List => Import class

The default import statement introduced is

import com.sun.tools.javac.util.List;

while I expect it to be :

import java.util.List;

Is there any configuration that I can redress or is this some bug in the combinations I am using? Would want to know what settings has given preference to sun package over the java package?

Note : Have gone through the answer of Any way (or shortcut) to auto import the classes in IntelliJ IDEA like in Eclipse? but the options that I get when I type List doesn't include the one from java.util in my case.

Edit : The import for java.util.List is not missing, I am able to import the same manually.

SwissCodeMen
  • 4,222
  • 8
  • 24
  • 34
Naman
  • 27,789
  • 26
  • 218
  • 353

2 Answers2

16

I had an issue like this with java.util.Arrays not showing up in completion lists. Turns out I had somehow added it to the import and completion exclusion list. My finger must have slipped in a quick action popup at some point.

Maybe the same thing happened to you. Open your Settings dialog and find your way here:

Settings > Editor > General > Auto Import

Then, look for this list of Excluded imports:

Exclude from Import and Completion

See if java.util.List shows up in that list, and if so, remove it.

With java.util.List excluded, com.sun.tools.javac.util.List might be the only other List type in your class path. If you have the "Add unambiguous imports on the fly" option enabled, IntelliJ would then import the sun class without even asking.

Mike Strobel
  • 25,075
  • 57
  • 69
  • It just could be so painful sometimes when you don't realize what had just changes with few button press and mouse clicks. Thanks for debugging this. – Naman Sep 07 '17 at 19:03
1

I don't think there is such option to prefer a package over another for importing classes.

Instead, you could exclude com.sun.tools.javac.util.List from auto import. To do so, in Class to Import window, click on the arrow on the right, then Exclude com.sun... from auto-import: exclude auto-import popup

After that, java.util.List should be the first choice of import. If later you need to remove some excluded imports, you can go to PreferencesEditorGeneralAuto Import to find them.

Jonathan
  • 772
  • 4
  • 11
  • *java.util.List should be the first choice of import.* its not even a choice for now is what my concern is. I dnt want to deprioritize the `sun` package import anyway. – Naman Sep 02 '17 at 10:45
  • Maybe try to uncheck `Add unambiguous imports on the fly` option in **Auto Import** settings? – Jonathan Sep 02 '17 at 10:47
  • Is `java.util.List` the only missing import from the JDK? Do you have `Optional` or `Double`? – Jonathan Sep 02 '17 at 10:51
  • Its not a missing import, I can still manually add it to the imports. Would add this info in the question – Naman Sep 02 '17 at 10:52
  • @nullpointer Settings > Editor > General > Auto Import, then in the 'Java' section look for a list entitled "Exclude from Import and Completion". – Mike Strobel Sep 07 '17 at 18:44