No puede usar clases en el paquete predeterminado de un paquete con nombre.
( Técnicamente , puede, como se muestra en la respuesta de Sharique Abdullah a través de la API de reflexión, pero las clases del espacio de nombres sin nombre no están dentro del alcance de una declaración de importación )
Antes de J2SE 1.4, podía importar clases desde el paquete predeterminado usando una sintaxis como esta:
import Unfinished;
Eso ya no está permitido . Entonces, para acceder a una clase de paquete predeterminada desde dentro de una clase empaquetada, es necesario mover la clase de paquete predeterminada a un paquete propio.
Si tiene acceso a la fuente generada por groovy, es necesario un procesamiento posterior para mover el archivo a un paquete dedicado y agregar esta directiva de "paquete" al principio.
Actualización 2014: el error 6975015 , para JDK7 y JDK8, describe una prohibición aún más estricta contra la importación de paquetes sin nombre.
El TypeName
debe ser el nombre canónico de un tipo de clase, tipo de interfaz, tipo de enumeración, o tipo de anotación.
El tipo debe ser un miembro de un paquete con nombre o un miembro de un tipo cuyo tipo más externo que lo encierra léxicamente es un miembro de un paquete con nombre , o se producirá un error en tiempo de compilación .
Andreas señala en los comentarios :
"¿Por qué [el paquete predeterminado] está ahí en primer lugar? ¿Error de diseño?"
No, es deliberado.
JLS 7.4.2. Paquetes sin nombre dice: "La plataforma Java SE proporciona paquetes sin nombre principalmente para su conveniencia cuando se desarrollan aplicaciones pequeñas o temporales o cuando recién se inicia el desarrollo".