panelAvatarChooser Error Al generar JAR

Iniciado por Alaric, 17 Junio 2015, 15:22 PM

0 Miembros y 1 Visitante están viendo este tema.

Alaric

Bueno tengo un problema al generar un JAR en netbeans
Primero creo un jframe con un Escritoriopanel,Boton y direcciono a un JInternalFrame
en el pongo un panelAvatarChooser lleno las imagenes , guardo y ejecuto en el netbeans me corre normal EL PROBLEMA ES CUANDO GENERO EL JAR EJECUTO PRESIONO EL BOTON Y NO ME SALE EL JInternalFrame

me di cuenta k si saco la funcion que llena las imagenes genero el jar presiono el boton y me sale el JInternalFrame y obviamente no me sale las imagenes

aqui les dejo mi programa prueba k ise en rar
https://mega.co.nz/#!eclmSQaY!oAex0FF77tKH2gX778at-HMnvjEvIBmwgXcsQSfeB48

NewJFrame - BOTON

Código (java) [Seleccionar]
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        this.jDesktopPane1.removeAll();
        FrCompuestoVAyVF JHingreso = new FrCompuestoVAyVF();
        this.jDesktopPane1.add(JHingreso);
        JHingreso.setVisible(true);        // para el JInternalFrame
       
//        VAyVF in =new VAyVF();// para el jframe
//        in.setVisible(true);
    }

JInternalFrame
Código (java) [Seleccionar]

public class FrCompuestoVAyVF extends javax.swing.JInternalFrame {
DefaultTableModel model;
    /**
     * Creates new form FrCompuestoVAyVF
     */
    public FrCompuestoVAyVF() {
        initComponents();
     llenarMenu();//quitando esta funcion, genero el jar y si me funciona pero obviamente no con las imagenes
        EjecucionTabla();
        Desahabilitar();
       
    }
   
   
   
    public void llenarMenu(){
    List<Avatar> avatars =new ArrayList<Avatar>();
    avatars.add(new Avatar("Valor Presente",loadImage("/img/va.png")));
    avatars.add(new Avatar("Valor Presente Capitalizable",loadImage("/img/va2.png")));
    avatars.add(new Avatar("Valor Futuro",loadImage("/img/VF1.png")));
    avatars.add(new Avatar("Valor Futuro Capitalizable",loadImage("/img/vf2.png")));
    avatars.add(new Avatar("Salir",loadImage("/img/salir.png")));
    avatars.add(new Avatar("Salir",loadImage("/img/salir.png")));
   

    panelAvatarChooser1.setAvatars(avatars);
    }
   
    public static Image loadImage(String filename){
        try {
            return ImageIO.read(FrCompuestoVAyVF.class.getResource(filename));
        } catch (Exception e) {
            return null;
        }
   
    }

Usuario Invitado

Ejecútalo el JAR mediante la shell, si al presionar el botón te muestra el rastreo de pila (en la shell) con un IOException, es porque estás cargando mal la ruta.

Por ejemplo, si tienes tu clase Main en el paquete main y las imagenes en resources/img, tendrías que hacer:

Código (java) [Seleccionar]
Main.getClass().getResource("../resources/img/imagen-1.jpg");

La razón por la cual muestra las imágenes cuando ejecutas desde NetBeans y no cuando ejecutas el JAR, es porque cuando lo ejecutas desde NetBeans éste carga la ruta absoluta, por ejemplo (c://users/tu_user/documents/NetBeansProjects/tu_proyecto/resources/img/imagen-1.jpg), entonces, cuando tu ejecutas el JAR en otra ubicación, obviamente no las encontrará y lanzará un IOException informando que no ha sido posible leer dicha ruta.


Saludos.
"La vida es muy peligrosa. No por las personas que hacen el mal, si no por las que se sientan a ver lo que pasa." Albert Einstein

Alaric

tiene razon en que la ruta de la imagen esta mal por eso no carga la imagen y me bota el null
cuando cambio la ruta ../resources por la direccion en donde esta el jar entonces en el netbeans es obviamente que me sale error entonces porque tb me sale error en el jar si esta en la posicion donde se ubica el jar

ejecuto desde el jar y antes puse un mensaje de error en la Exception


al principio ejecutando desde netbeans