Actually, the default package is discouraged
everywhere.
Seriously, since the fully-qualified name of a class includes the package name, and the default package (by definition) has no package name, there's too much chance for confusion.
Take an extreme case. Create a class named "String" and place it in the default package. Now define another class in the default package and construct
String objects. that is "String xyzzy = new String();"
Can you keep the difference between default "String" and implicit "java.lang.String" straight? Would you like to try on any non-trivial project? Eclipse doesn't.