Hola a todos, ¿Qué tal? Hasta ahora
hemos visto como empaquetar nuestras aplicaciones en un archivo JAR y como
firmarlas.
En este apartado vamos a ver cómo
crear un ejecutable, es muy similar a como se empaquetan los archivos JAR.
Cuando creamos el archivos ejecutable
en Windows tendrá formato .exe, en
Linux formato .deb, en Solaris .elf y en MacOs .app. Da igual en el sistema operativo donde ejecutemos el archivo,
cada sistema operativo lo ejecutará con su formato correspondiente.
Seguimos con el ejemplo de la Calculadora que hemos estado utilizando hasta ahora. En Eclipse vamos al menú File y Export:
Nos aparece la siguiente ventana, tenemos que seleccionar Runnable JAR file:Pulsamos en el botón Next, en la siguiente ventana tenemos que elegir la clase y el proyecto y donde lo queremos guardar, por lo demás no es necesario modificar nada.Pulsamos el botón Finish nos aparece la siguiente ventana con información adicional pero no significa que tenga errores:Pulsamos el botón OK, vamos a la carpeta donde hemos guardado este archivo ejecutable y lo ejecutamos:El proceso es similar a cuando empaquetamos archivos JAR.En este caso no ha habido ningún
problema para crear el ejecutable, sin embargo, en aplicaciones que utilizan
recursos externos, como imágenes al crear el ejecutable los recursos externos
no los tienes en cuenta, no los incluye.
Vamos a verlo en este ejemplo, nos
creamos un nuevo proyecto al que vamos a llamar Colores y dentro de este proyecto vamos a crearnos la siguiente
clase MultiplesFuentes con la que ya
hemos trabajado anteriormente, el código completo es el siguiente:
import java.awt.Color;
import
java.awt.event.ActionEvent;
import javax.swing.*;
public class
MultiplesFuentes {
public static void main(String[] args) {
MarcoFuentes mimarco=new MarcoFuentes();
mimarco.setVisible(true);
mimarco.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
class MarcoFuentes
extends JFrame{
public MarcoFuentes()
{
setTitle("Práctica
MarcoFuentes");
setSize(400, 400);
LaminaFuentes milamina =new
LaminaFuentes();
add(milamina);
}
}
class LaminaFuentes
extends JPanel{
public LaminaFuentes()
{
ActionColor accionAmarillo = new ActionColor("Amarillo", new ImageIcon("bin/bola_amarilla.gif"), Color.yellow);
ActionColor accionAzul = new ActionColor("Azul", new ImageIcon("bin/bola_azul.gif"), Color.blue);
ActionColor accionRojo = new ActionColor("Rojo", new ImageIcon("bin/bola_roja.gif"), Color.red);
add(new JButton(accionAmarillo));
add(new JButton(accionAzul));
add(new JButton(accionRojo));
InputMap mapaEntrada =
getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
KeyStroke teclayellow = KeyStroke.getKeyStroke("ctrl
Y");
KeyStroke teclablue = KeyStroke.getKeyStroke("ctrl
B");
KeyStroke teclared = KeyStroke.getKeyStroke("ctrl
R");
mapaEntrada.put(teclayellow, "fondo_amarillo");
mapaEntrada.put(teclablue, "fondo_azul");
mapaEntrada.put(teclared, "fondo_rojo");
ActionMap mapaAccion =
getActionMap();
mapaAccion.put("fondo_amarillo", accionAmarillo);
mapaAccion.put("fondo_azul", accionAzul);
mapaAccion.put("fondo_rojo", accionRojo);
}
private class ActionColor extends AbstractAction
{
public
ActionColor(String nombre, Icon icono, Color color_boton) {
putValue(Action.NAME, nombre);
putValue(Action.SMALL_ICON, icono);
putValue(Action.SHORT_DESCRIPTION, "Rellenar
el fondo de color" + nombre);
putValue("color_de_fondo", color_boton);
}
@Override
public void
actionPerformed(ActionEvent e) {
Color
c =
(Color)getValue("color_de_fondo");
setBackground(c);
}
}
}
Si probamos se ejecuta la siguiente ventana:
Si pulsamos en alguno de estos tres botones, por ejemplo, el amarillo, el fondo de la ventana se rellena del color amarillo:Tiene tres recursos externos que son las imágenes de los botones:Vamos a crear el archivo ejecutable tal y como hemos hecho con la Calculadora:Al pulsar el botón Finish nos ha creado el archivo ejecutable con el nombre que le hemos dado.Si lo ejecutamos:La aplicación funciona, si pulsamos en cualquier botón:
Sin embargo, no ha tenido en cuenta
las imágenes, no las ha incluido.
Para que las tenga en cuenta tenemos
que modificar el código, abrimos el archivo, tenemos que utilizar la clase URL por lo que hay que importar el paquete
java.net y el método getResource donde va a estar la ruta:
URL color_amarillo = LaminaFuentes.class.getResource("bin/bola_amarilla.gif");
ActionColor accionAmarillo = new ActionColor("Amarillo", new ImageIcon(color_amarillo), Color.yellow);
URL color_azul = LaminaFuentes.class.getResource("bin/bola_azul.gif");
ActionColor accionAzul = new ActionColor("Azul", new ImageIcon(color_azul), Color.blue);
URL color_rojo =
LaminaFuentes.class.getResource("bin/bola_rojo.gif");
ActionColor accionRojo
= new ActionColor("Rojo",
new ImageIcon(color_rojo),
Color.red);
Volvemos a ejecutar el archivo para que nos cree el archivo .class. Volvemos a crear el archivo ejecutable, una vez creado pulsamos sobre él:
Sigue sin aparecer las imágenes de los botones ya que nos falta un paso adicional, abrimos el archivo con el winrar, por ejemplo, añadimos las imágenes:De esta forma si lo ejecutamos ya se muestran las imágenes de los botones:
Si tenéis dudas ya sabéis que podéis hacérmelo llegar a través de los comentarios del blog. Os espero en el próximo post. Hasta pronto!9.2 FIRMAR ARCHIVOS JAR << >>
9.4 JAVA WEB START
No hay comentarios:
Publicar un comentario