Paquetes en Java
Coloca la clase Bell en una carpeta llamada kit con la primera línea package kit; y un método static ring() que imprime ding. En Lobby.java junto a esa carpeta — no dentro de kit — llama desde main a kit.Bell.ring();. Compila desde la carpeta padre y ejecuta java Lobby. La pantalla debe mostrar una línea: ding. El nombre del paquete y el de la carpeta coinciden. Llamar con kit.Bell delante es lo que enseña esta página. Deja la palabra import para la página siguiente.
Un nombre de carpeta que el archivo declara
Hasta ahora cada clase vivía en una carpeta plana. Un paquete agrupa clases bajo un nombre de carpeta. La primera línea del archivo debe decir ese nombre: package kit;. El archivo Bell.java debe vivir dentro de una carpeta llamada kit. Si la carpeta y la línea package no coinciden, javac se queja.
Crea primero la carpeta kit. Dentro crea Bell.java. La primera línea es package kit;. Luego la línea public class es public class Bell. No dejes un nombre de clase antiguo Gate o Tag aquí. Escribe un método static:
public static void ring() { System.out.println("ding"); }
Pon public en el método para que una clase fuera del paquete pueda llamarlo. En Bell.java no hay main. Guarda antes de compilar.
package kit;
public class Bell {
public static void ring() {
System.out.println("ding");
}
}
Lobby llama kit.Bell.ring
Crea Lobby.java en la carpeta padre — al mismo nivel que la carpeta kit, no dentro. Su línea public class es public class Lobby. Dentro de main, escribe kit.Bell.ring();. No escribas import kit.Bell; en esta página. El nombre completo kit.Bell basta para la llamada.
Mantén Lobby como la clase que guarda main. No pongas main dentro de Bell en esta lección. Si aún queda un archivo Pier de la página de acceso cerca, no ejecutes java Pier en esta lección — ejecuta java Lobby después de compilar desde la carpeta padre.
public class Lobby {
public static void main(String[] args) {
kit.Bell.ring();
}
}
Desde la carpeta padre que guarda tanto Lobby.java como la carpeta kit, ejecuta javac kit/Bell.java Lobby.java. En Windows la barra puede ser kit\Bell.java con la misma idea — apunta javac al archivo dentro de la carpeta del paquete, luego a Lobby.java. Cuando paréntesis, llaves y puntos y coma coinciden, javac no escribe una línea propia. Luego ejecuta java Lobby — no java Lobby.java ni java kit.Bell. Quita el final .java del comando de ejecución. Arranca la clase que guarda main. Los mismos comandos funcionan en Windows y en macOS cuando las rutas coinciden con tu shell.
El programa debe imprimir una línea y parar: ding. No debe pedirte que escribas. Si la terminal espera teclado, aún queda una llamada nextLine de un ejercicio antiguo en un archivo. Bórrala y mantén kit.Bell.ring(); en Lobby, con package kit; en Bell.
Recorre la ejecución una vez. Java empieza en Lobby.main. La llamada kit.Bell.ring() encuentra la clase Bell en el paquete kit y ejecuta el método static. El cuerpo imprime ding. La pantalla muestra ding. Nada más debe imprimirse. Si ves 9 u ok, aún estás ejecutando un programa Pier o Yard antiguo de una página anterior.
Si Bell.java está junto a Lobby.java sin carpeta kit mientras el archivo aún dice package kit;, javac lo rechaza. Mueve el archivo dentro de kit. Si llamas Bell.ring(); sin kit. desde fuera del paquete, javac no ve el nombre corto en esta página — mantén kit.Bell.ring();. El nombre del paquete forma parte del nombre completo del tipo hasta que la página siguiente enseña import.
Carpeta y línea package juntas
Una tabla corta mantiene clara la coincidencia.
📊 folder vs package line
| Pieza | En esta página |
|---|---|
| nombre de carpeta | kit |
| primera línea en Bell.java | package kit; |
| llamada desde Lobby | kit.Bell.ring(); |
| import | no en esta página — lección siguiente |
La tabla es solo un recordatorio. Las piezas tipadas que mantienes son package kit; en el archivo Bell, la ruta del archivo bajo kit y kit.Bell.ring(); en Lobby. |
Comparado con acceso y con una carpeta plana
En la página de acceso, Gate y Pier compartían una carpeta con un campo private. Eso sigue funcionando. Esta página añade una carpeta de paquete y una línea package. Una demo sobrante Gate g = new Gate(9); g.show(); es otra lección. Para esta página mantén kit/Bell.java y Lobby.java y kit.Bell.ring();.
Aún puedes usar carpetas planas para demos muy pequeñas. Esta lección elige un paquete para que veas el nombre delante de la clase. No mezcles g.show() y kit.Bell.ring() en la misma demo Lobby de esta página. Un camino claro basta: línea package, carpeta coincidente, llamada completa desde Lobby.
Compila desde el padre, no solo desde dentro de kit
Quédate en la carpeta padre cuando compiles y cuando ejecutes java Lobby. Si haces cd dentro de kit e intentas ejecutar Lobby desde ahí sin arreglar la historia del classpath, se rompe el camino corto de la lección. Mantén el padre como carpeta de trabajo en esta página. El archivo .class de Bell debe aparecer bajo kit tras una buena compilación, junto a Bell.java.
Si la pantalla muestra 9 u ok, aún corre un programa Pier o Yard antiguo. Cambia a java Lobby. Si javac no encuentra kit.Bell, comprueba la ortografía del nombre de carpeta y la línea package kit; carácter a carácter.
Lo que queda para import
Esta página escribe el nombre completo kit.Bell en cada llamada. Una página posterior — import — muestra cómo import kit.Bell; te deja escribir el nombre corto Bell en Lobby. Quédate aquí con el nombre completo. No inventes import en esta página a menos que ya lo conozcas; el objetivo de la lección es la carpeta del paquete y kit.Bell.ring();.
Cuando aún quedan archivos antiguos Gate.java o Pier.java en la carpeta padre, déjalos o bórralos solo si confunden el comando de compilación. Ejecuta java Lobby después de compilar el par del paquete de esta lección.
Antes de import
Puedes colocar Bell.java bajo la carpeta kit con package kit; y public static void ring() que imprime ding, y desde Lobby llamar kit.Bell.ring(); sin import. Compila desde la carpeta padre y ejecuta java Lobby. La pantalla muestra ding. El nombre del paquete coincidió con la carpeta. La página siguiente es import, donde tras una línea import basta el nombre corto.
Mantén package kit; como primera línea en Bell. Mantén el archivo dentro de kit. Mantén la llamada como kit.Bell.ring();. Esos tres hábitos son el punto de control de esta página antes de seguir. Cuando la pantalla muestra ding desde la carpeta padre, el diseño del paquete hace su trabajo en esta lección.
🧠 Pon a Prueba tu Conocimiento
Pon a Prueba tu Conocimiento
Ponte a prueba con este cuestionario interactivo y descubre qué tan bien entiendes el tema
📝 Instrucciones
- Lee cada pregunta cuidadosamente
- Selecciona la mejor respuesta para cada pregunta
- Puedes repetir el quiz tantas veces como quieras
- Tu progreso se mostrará en la parte superior