Paquetes en Java
y cómo compilar todo
Dr. Asdrúbal López Chau
Código sin paquetes
• Suponer que se está desarrollando un sistema software, para lo cual
se han diseñado cuatro clases (Cliente, Cuenta, Producto y Persona)
para modelar objetos, y una clase Main para probarlos antes de la
siguiente etapa del desarrollo.
• Una forma (muy mala) de organizar estas clases es la siguiente:
P.O.O. por Dr. Asdrúbal López Chau 2
Código sin paquetes
• Ventajas:
• Compilar es muy fácil: javac *.java
• Desventajas:
• Todas: No hay organización del código, no se puede reutilizar en otros
proyectos, no pueden haber clases diferentes con el mismo nombre, etc.
P.O.O. por Dr. Asdrúbal López Chau 3
Paquetes
• Una mejor solución al problema anterior, es organizar todo en sub
directorios.
VS
Esto da origen a lo que se conoce como paquetes…
P.O.O. por Dr. Asdrúbal López Chau 4
Paquetes en Java
• Un Paquete en Java es simplemente un contenedor de clases (o sea,
un directorio) que permite agrupar las distintas partes (clases) de un
programa (en subdirectorios).
• Define la ubicación de varias clases en un directorio de estructura
jerárquica.
Adaptado de [Link] consultado el 24 febrero 2019
P.O.O. por Dr. Asdrúbal López Chau 5
Viviendo “sin paquetes”
• Toda clase en Java debe de pertenecer a un paquete.
• Cada archivo .java deberá de especificar en qué paquete se
encuentra.
• Pregunta, ¿Pero cómo? ¡Si nunca lo habíamos especificado!
• Respuesta: Si no se define un paquete para una clase Java, se definirá
automáticamente un paquete llamado "default”.
• Moraleja: No se puede vivir sin paquetes en Java, si no se especifica
se crea el paquete default.
P.O.O. por Dr. Asdrúbal López Chau 6
Nombres de paquetes
• Los nombres de paquetes deben de escribirse en minúsculas
(recomendado para cumplir el estándar).
• Se debe de usar el nombre de dominio inverso de la organización que
desarrolla la clase, ejemplo:
• [Link] es la organización
• El paquete sería el siguiente:
• [Link]
P.O.O. por Dr. Asdrúbal López Chau 7
Especificando el paquete de cada clase
• Se usa la palabra reservada package y el nombre del paquete.
• Ejemplo
Debe de ser la primera
línea de código en el
archivo
(los comentarios no
cuentan).
Para ejercicios simples, a veces
se omite lo del dominio inverso,
pero en desarrollos reales
es OBLIGATORIO.
P.O.O. por Dr. Asdrúbal López Chau 8
¿Cómo compilar todo?
• Suponer la siguiente estructura
Para compilar, lo primero es “pararse” o ubicarse
en el directorio superior a donde se encuentran los paquetes
Ejemplo: En windows es dir
P.O.O. por Dr. Asdrúbal López Chau 9
¿Cómo compilar todo?
• Suponer la siguiente estructura
El comando a usar es….
javac -cp directorioPaquetes [Link]
P.O.O. por Dr. Asdrúbal López Chau 10
¿Cómo compilar todo?
• Comando
javac -cp directorioPaquetes [Link]
Revuelve código y
Esto funciona, pero genera los archivos bytecode
.class en las mismas
carpetas donde se encuentran los .java
P.O.O. por Dr. Asdrúbal López Chau 11
¿Cómo compilar todo?
• Para evitar lo anterior, se recomienda crear un directorio aparte,
llamado, por ejemplo, classes o build
Directorio donde se almacenarán los .class
Donde se almacenan
El comando para compilar es
javac -cp src/ src/pruebas/[Link] -d classes
Clase principal
Directorio de paquetes P.O.O. por Dr. Asdrúbal López Chau 12
¿Cómo compilar todo?
javac -cp src/ src/pruebas/[Link] -d classes
¡Ahora, los archivos .class se
han generado en el directorio especificado!
Veamos ahora cómo se ejecuta el programa…
P.O.O. por Dr. Asdrúbal López Chau 13
¿Como ejecutar?
• Para ejecutar se usa el comando java, pero especificando la ruta
donde se encuentran los paquetes, y el nombre de la clase Main,
incluyendo el paquete.
P.O.O. por Dr. Asdrúbal López Chau 14
¿Como ejecutar?
• Ejemplo
Este error es muy común. Se debe a que no se ha especificado correctamente la ruta
donde se encuentran los paquetes, o está mal el nombre de la clase principal
P.O.O. por Dr. Asdrúbal López Chau 15
¿Como ejecutar?
• Ejemplo
Correcto:
P.O.O. por Dr. Asdrúbal López Chau 16
¿Como ejecutar?
• Ejemplo, fuera del directorio
Hay que colocar toda la ruta
P.O.O. por Dr. Asdrúbal López Chau 17
¿Como ejecutar?
Algunos problemas del enfoque anterior son:
• Se debe de especificar la ruta completa
• Se debe de usar la consola, o crear un archivo bat o shell para que
ejecute
• La aplicación consiste en varios archivos .class, eliminar alguno por
error causa que la aplicación pueda colapsar.
P.O.O. por Dr. Asdrúbal López Chau 18
Archivos jar
• Los archivos .jar son archivos comprimidos por la herramienta jar de
java
• Pueden contener .class, imágenes u otros recursos
• Son usados para empaquetar una solución Java, autoejecutable
P.O.O. por Dr. Asdrúbal López Chau 19
Archivos jar
• Crearemos un archivo llamado [Link] que contenga lo siguiente
Main-Class: [Link]
Class-Path: ./classes
P.O.O. por Dr. Asdrúbal López Chau 20
Archivos jar
• El comando para producir el jar es:
jar cvfm [Link] [Link] -C classes/ .
P.O.O. por Dr. Asdrúbal López Chau 21
Ejecutar el jar
• Ahora, nuestra aplicación se encuentra contenida en un solo archivo,
llamado [Link]
P.O.O. por Dr. Asdrúbal López Chau 22