JAR

Anuncio
Construcción de Software II
Guía 25 – Package Jar Manifest
142
Este saca un listado con todos los ficheros y directorios que hay en el fichero *.jar. Al
listar cada fichero .class, pone delante el directorio/directorios en los que está metido (y
que debe coincidir con su package si todo es correcto).
Práctica 140
Fichero JAR ejecutable
Cómo hacer para ejecutar una clase por defecto almacenada en un fichro JAR al hacer
doble click en Windows o mediante línea de comandos DOS.
Al crear un fichero JAR, se crea un único fichero MANIFEST con datos del fichero JAR
dentro del propio fichero en la ruta 'META-INF\MANIFEST.MF'. Para que un fichero JAR
sea ejecutable, habrá que modificar el fichero MANIFEST.MF, y añadir las siguientes
líneas:
Modificaciones MANIFEST.MF
Main-Class: 'nombre de la clase principal'
Path: .\'nombre del fichero jar'.jar
Práctica 141
Queremos crear un fichero JAR con el nombre myjar.jar con la clase MyClass.class que
será la que contenga el método main a ejecutar.
1. Con un editor de texto, creamos el fichero 'mymanifest.mf' en la misma ruta donde se
encuentre el fichero MyClass.class, que contenga las siguientes líneas:
mymanifest.mf
Main-Class: MyClass
Path: .\myjar.jar
2. Desde la ruta con todos los ficheros, ejecutar el siguiente comando:
jar
jar -cvfm misClases.jar mymanifest.mf misClases.class
3. Comprobar que en Windows haciendo doble click en el fichero JAR generado, la clase
MyClass.class se ejecuta,
4. Por simbolo del sistema
Ejecución
java -jar myjar.jar
Práctica 142
Crear un archivo jar con JCreator
Entrar a Configure>Options>Tools..le doy al Boton "new".. aparece un menu y clickeas
"Create jar File". Dobleclic para cambiar nombre. En Arguments escriba:
cfm miClase.jar c:\miClase\META-INF\manifiesto.mf miClase.class
(Agregue todos los demas archivos que componen el programa)
Con winrar abres el jar..primero le borras todos los ficheros con extension .java (el jar
no los utiliza solo se requieren los .class)
El mas importante es el archivo manifest.mf
que se encuentra dentro de la carpeta
META-INF.. sacamos ese archivo lo
editamos. Para que el jar se ejecute necesita
el nombre de la clase que posee el main, si
no existe.lo escribes:
Manifest-Version: 1.0
Main-Class: miClase
Created-By: 1.6.0 (Sun Microsystems Inc.)
lo guardas y lo reeemplazas por el antiguo
archivo manifest.mf. Listo el archivo .jar
Dobleclic para ejecutarlo.
www.dariolara.com
Guía 25 – Package Jar Manifest
Construcción de Software II
139
Java en Sistema D.O.S
Introducción
El lenguaje Java se puede ejecutar en una IDE (Interface Development
Environment) como Jcreator, Eclipse, Netbeans, Bluej, etc., la cual integra el
editor para digitar el codigo fuente, el debugger para depurar el software, la
JVM (Java Virtual Machine) y el sistema de compilacion que convierte el
codigo fuente (.java) en ByteCodes (codigo binario) o codigo objeto (.class)
Proceso en sistema
Los programas Java tambien se pueden ejecutar en ambiente de sistema (DOS)
directamente, asi:
1. Digitar los codigos en un bloc de notas
2. Se compila con el programa javac.exe
3. Se ejecuta con el programa java.exe
Cuando se trabaja con programas java se requiere definir la ruta de las clases
para que el sistema operativo busque las clases digitadas.
Classpath
Cuando empezamos con java es bastante habitual obtener el error "class not
found" al intentar ejecutar nuestro programa, aunque estamos bastante
seguros de que todo está como debía.
Vamos a suponer que tenemos un programa java compuesto por varias clases.
En ninguna parte de nuestras clases hemos puesto package y lo tenemos todo
compilado en un mismo directorio, por ejemplo ..../usuarios/MI_PROYECTO
en windows). Supongamos además que nuestro método main() está en el
fichero clasePrincipal.class.
Si ejecutamos nuestro programa en simbolo de sistema con java, escribimos:
java clasePrincipal
El comando java busca las clases que necesita en unos determinados
directorios y ficheros .jar. Por defecto los buscará en los directorios propios de
java y en el directorio en el que se esté ejecutando el comando java.
Si estamos en el directorio indicado, tenemos una versión de java moderna y
repito, no hemos puesto package por ningún lado, todo esto funcionará
correctamente.
Para que funcione todo correctamente se
deben definir las rutas de clase:
A. En el simbolo del sistema
C:\>classpath c:\archivos de programa\java\bin
B.
Para las IDE se requiere declarar la ruta en
el path environment del icono de Sistema

Panel de control

Icono de sistema

Propiedades del sistema

Variables de entorno

Ruta declarada ClassPath
www.dariolara.com
Construcción de Software II
Guía 25 – Package Jar Manifest
140
package
Todo lo contado ahora es sin poner package en ningún sitio de nuestro código.
Si hacemos, por ejemplo, una clase con package
package Practicas
public class miClase {
...
}
Esto "crea" un directorio o carpeta con el mismo nombre que el paquete (es
decir, un directorio Practicas) y dentro de él el fichero miClase.class
correspondiente. Cuando alguna otra clase quiera usar esta clase, pondrá
import Practicas.MiClase;
JAR
jar permite "empaquetar" en un único fichero *.jar varias estructuras de
directorios con sus archivos.
Es un archivo ejecutable de java que contiene todo.
Práctica 138
Creación de un archivo .jar en simbolo de sistema
Aquí explicaremos como crear un archivo JAR ejecutable para aplicaciones Java
que es válido para cualquier sistema operativo y aporta otras muchas
posibilidades.
Podemos considerar un archivo *.jar como un árbol de directorios y ficheros,
que ha sido empaquetado.
Los archivos jar permiten introducir todos los archivos necesarios para ejecutar
nuestra aplicación (clases, imágenes, sonidos, archivos de texto, etc.) en uno
solo con la posibilidad de comprimirlos. Pero además ofrecen otras
posibilidades, entre las que se encuentra la posibilidad de añadir información
adicional: versión del programa, quién lo creó, entre otros y la que en nuestro
caso nos interesa: indicar la clase principal (la que contiene el método main())
para poder ejecutarla con el intérprete de Java. Esta información se guarda en
un archivo dentro del jar, que se llama MANIFEST.MF cuya ruta dentro del
archivo jar será siempre META-INF/MANIFEST.MF. Este archivo es creado por
defecto siempre que se crea un archivo jar. Este archivo se puede personalizar,
más adelante veremos cómo.
Ejemplo
jar cfv MiArchivo.jar Clase1.class Clase2.class Imagen1.gif Imagen2.gif Texto.txt OtrosArchivos
Con esta instrucción estamos creando un archivo jar de nombre MiArchivo.jar
que contendrá los archivos Clase1.class, Clase2.class, Imagen1.gif, Imagen2.gif,
Texto.txt y el directorio OtrosArchivos.
Como se puede observar en un archivo jar podemos meter cualquier tipo de
archivo, incluso directorios. En el ejemplo hemos empleado las opciones c, f y v
de la línea de comandos. Veamos la descripción de estas opciones y otras más:
c - Indica que vamos a crear un archivo.
f - Indica que la salida vaya a un archivo, y no a la salida estándar.
www.dariolara.com
Guía 25 – Package Jar Manifest
Construcción de Software II
141
v - Indica que queremos obtener información durante el proceso de creación
del archivo.
m - Indica al programa que queremos personalizar el archivo de manifiesto
para añadir información adicional.
M - Indica que no se cree el archivo de manifiesto.
0 - Indicamos que no queremos que se comprima el contenido del archivo.
Práctica 139
Creacion de un Archivo MANIFEST.MF
Se usa para indicar cual va a ser la clase principal que contiene el método
main() y que ejecutará el programa al hacer doble clic en el jar.
El archivo de manifiesto es un archivo de texto plano (sin formato).
El archivo podrá tener cualquier nombre y/o extensión, ya que lo que el
programa jar hará será mezclar el contenido de este archivo con el que se crea
por defecto. En nuestro caso el archivo de manifiesto tendrá una sola línea en
la que indicaremos la clase principal (la que contiene el método main).
Esto se hace de la siguiente forma:
Main-Class: ClasePrincipal
De este modo se indica cual es la clase principal (sin .class). Ahora deberemos
crear el archivo jar con esta información.
Creamos con el bloc de notas MiManifiesto.mf
A continuación se muestra un ejemplo:
jar cfm MiManifiesto.mf MiArchivo.jar ClasePrincipal.class OtraClase.class Imagen.gif
Ahora si abrimos el archivo jar con WinZip o alguno similar y consultamos el
contenido de MANIFEST.MF veremos se le añadió la línea Main-Class:
ClasePrincipal. Como seguramente ya se dieron cuenta, podemos editar
directamente el archivo MANIFEST.MF añadiendo la línea de Main-Class:
ClasePrincipal evitando todo el procedimiento que acabamos de explicar,
aunque la forma recomendada es siguiendo el procedimiento para evitar algún
tipo de error humano. Ahora solamente tenemos que indicar al sistema
operativo que los archivos .jar se tienen que abrir con el interprete de Java.
Agregar un directorio package al codigo.
Si hemos puesto package en nuestras clases, debemos crear un directorio con
el nombre del paquete y dejar en él nuestros *.class. Luego con jar debemos
empaquetar el directorio con las clases que tiene dentro
Ejemplo
jar cvf MiLibreria.jar Practicas/*.class
Esto mete dentro de MiLibreria.jar el directorio con todas sus clases. Al igual
que antes. java busca en el fichero .jar un directorio con el mismo nombre que
el paquete y dentro de él la clase. Por ello es importante empaquetar también
el directorio.
Nota
Para verificar qué es lo que se ha metido en nuestro .jar y asegurarnos que es
lo que queremos, se usa la opción t
jar tvf MiLibreria.jar
www.dariolara.com
Descargar