[RESOLVIDO] Algum problema na compilação do projeto

Olá a todos,
Estou usando o NetBean para desenvolver um projeto para uma empresa, dentro da IDE estava perfeito, mas quando compilei e executei o programa, notei que uma das minha telas não estava abrindo (e ela estava normal dentro da IDE). Na minha analise, descobri que a classe abaixo que não funciona quando compilado, pois, se eu desativar seus métodos, ela funciona normalmente.

/*

  • To change this license header, choose License Headers in Project Properties.
  • To change this template file, choose Tools | Templates
  • and open the template in the editor.
    */
    package UTIL;

import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JOptionPane;

/**
*

  • @author marcelosiedler
    */
    public class ManipularImagem {

    /*

    • Faz redimensionamento da imagem conforme os parâmetros imgLargura e imgAltura mantendo a proporcionalidade.

    • Caso a imagem seja menor do que os parâmetros de redimensionamento, a imagem não será redimensionada.

    • @param caminhoImg caminho e nome da imagem a ser redimensionada.

    • @param imgLargura nova largura da imagem após ter sido redimensionada.

    • @param imgAltura nova altura da imagem após ter sido redimensionada.

    • @return Não há retorno

    • @throws Exception Erro ao redimensionar imagem
      ************************************************************************************************************/
      public static BufferedImage setImagemDimensao(String caminhoImg, Integer imgLargura, Integer imgAltura) {
      Double novaImgLargura = null;
      Double novaImgAltura = null;
      Double imgProporcao = null;
      Graphics2D g2d = null;
      BufferedImage imagem = null, novaImagem = null;

      try {
      //— Obtém a imagem a ser redimensionada —
      imagem = ImageIO.read(new File(caminhoImg));
      } catch (IOException ex) {
      JOptionPane.showMessageDialog(null, "Erro: " +ex);
      Logger.getLogger(ManipularImagem.class.getName()).log(Level.SEVERE, null, ex);
      }

      //— Obtém a largura da imagem —
      novaImgLargura = (double) imagem.getWidth();

      //— Obtám a altura da imagem —
      novaImgAltura = (double) imagem.getHeight();

    //— Verifica se a altura ou largura da imagem recebida é maior do que os —
    //— parâmetros de altura e largura recebidos para o redimensionamento —
    if (novaImgLargura >= imgLargura) {
    imgProporcao = (novaImgAltura / novaImgLargura);//calcula a proporção
    novaImgLargura = (double) imgLargura;

         //--- altura deve <= ao parâmetro imgAltura e proporcional a largura ---  
         novaImgAltura = (novaImgLargura * imgProporcao);
    
     //--- se altura for maior do que o parâmetro imgAltura, diminui-se a largura de ---  
         //--- forma que a altura seja igual ao parâmetro imgAltura e proporcional a largura ---  
         while (novaImgAltura > imgAltura) {
             novaImgLargura = (double) (--imgLargura);
             novaImgAltura = (novaImgLargura * imgProporcao);
         }
     } else if (novaImgAltura >= imgAltura) {
         imgProporcao = (novaImgLargura / novaImgAltura);//calcula a proporção  
         novaImgAltura = (double) imgAltura;
    
     //--- se largura for maior do que o parâmetro imgLargura, diminui-se a altura de ---  
         //--- forma que a largura seja igual ao parâmetro imglargura e proporcional a altura ---  
         while (novaImgLargura > imgLargura) {
             novaImgAltura = (double) (--imgAltura);
             novaImgLargura = (novaImgAltura * imgProporcao);
         }
     }
    
     novaImagem = new BufferedImage(novaImgLargura.intValue(), novaImgAltura.intValue(), BufferedImage.TYPE_INT_RGB);
     g2d = novaImagem.createGraphics();
     g2d.drawImage(imagem, 0, 0, novaImgLargura.intValue(), novaImgAltura.intValue(), null);
    
     return novaImagem;
    

    }

    public static byte[] getImgBytes(BufferedImage image) {
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    try {
    ImageIO.write(image, “JPEG”, baos);
    } catch (IOException ex) {
    //handle it here… not implemented yet…
    }

     InputStream is = new ByteArrayInputStream(baos.toByteArray());
     
     return baos.toByteArray();
    

    }
    //Novo método para exibir imagem na tela
    //Recebe o label que queremos exibir E a imagem como array de bytes do banco
    public static void exibiImagemLabel(byte[] minhaimagem, javax.swing.JLabel label)
    {
    //primeiro verifica se tem a imagem
    //se tem convert para inputstream que é o formato reconhecido pelo ImageIO

     if(minhaimagem!=null)
     {
         InputStream input = new ByteArrayInputStream(minhaimagem);
         try {
             BufferedImage imagem = ImageIO.read(input);
             label.setIcon(new ImageIcon(imagem));
         } catch (IOException ex) {
         }
         
     
     }
     else
     {
         label.setIcon(null);
         
     }
    

}
}

Essa é a classe com os métodos.

public void inserir() throws SQLException {
conexaoBD.conexao();
// INSERIR CABECALHO
conexaoBD.executaSQL(“SELECT * FROM TBL_CABECALHO WHERE CABECALHO_ID = 1”);
try {
if (conexaoBD.rs.next()) {
jTextFieldLinha1.setText(conexaoBD.rs.getString(“CABECALHO_1”));
jTextFieldLinha2.setText(conexaoBD.rs.getString(“CABECALHO_2”));
jTextFieldLinha3.setText(conexaoBD.rs.getString(“CABECALHO_3”));
jTextFieldLinha4.setText(conexaoBD.rs.getString(“CABECALHO_4”));

            jLabelImagem.setIcon(byteI.byteImg(conexaoBD.rs.getBytes("CABECALHO_LOGO")));
        }
        conexaoBD.rs.close();
    } catch (Exception e) {
        JOptionPane.showMessageDialog(null, "Erro: " + e);
    }
    // INSERIR EMPRESA
    conexaoBD.executaSQL("SELECT * FROM TBL_EMPRESA WHERE EMPRESA_ID = 1");
    try {
        if (conexaoBD.rs.next()) {
            jTextFieldNomeFantasia.setText(conexaoBD.rs.getString("EMPRESA_NOME"));
            jTextFieldRazaoSocial.setText(conexaoBD.rs.getString("EMPRESA_RAZAO"));
            jTextFieldCNPJ.setText(conexaoBD.rs.getString("EMPRESA_CNPJ"));
            jTextFieldEndereco.setText(conexaoBD.rs.getString("EMPRESA_ENDERECO"));
            jTextFieldBairro.setText(conexaoBD.rs.getString("EMPRESA_BAIRRO"));
            jTextFieldNumero.setText(conexaoBD.rs.getString("EMPRESA_NUMERO"));
            jTextFieldComplemento.setText(conexaoBD.rs.getString("EMPRESA_COMPLEMENTO"));
        }
        conexaoBD.rs.close();
        conexaoBD.conexao().close();
    } catch (Exception e) {
        JOptionPane.showMessageDialog(null, "Erro: " + e);
    }
}

E esse é o método do meu Frame que chama a classe com problema.
Quando eu compilo aparece os dizeres em vermelho:

Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.

Não sei se tem alguma coisa relacionada, mas está ai.
Se alguém souber como resolver isso, eu agradeceria.

Att.

Na real isso não é erro, é só um aviso. Se não está mostrando os erros, é porquê você não colocou algo no try catch.

Então nos seus try catch’s coloca assim:

try{
   //seu metodo
} catch (Exception e){
  e.printStackTrace();
}

Mesmo inserindo essa linha no try catch ainda não me aparece um erro.

ManipularImagem.exibiImagemLabel(conexaoBD.rs.getBytes(“CABECALHO_LOGO”), jLabelImagem);

Essa linha de comando que está impedindo minha jFrame de abrir. Esse método pertence a classe que coloquei logo acima. E novamente, o programa funciona perfeitamente dentro da IDE, sem erro ou nada parecido, somente quando executo a aplicação compilado ocorre esse problema.

Que problema?
Põe um printStackTrace() nos seus catches.
Tem exceções que você está suprimindo, aí nunca vai descobrir a causa do problema.

Fiz isso com todos os meus try catch, mas infelizmente, sem resultado.
Eu tenho um menu bar, onde eu organizo a exibição dos meus formulários, quando clicado, ele dá um setVisible (true), todas as telas funcionam normalmente assim, apenas essa, onde eu faço tratamento de imagem pela classe, que não (e apenas quando executo o arquivo compilado). Não é exibido erro, nem nada parecido, ele simplesmente não abre quando eu uso o método dessa classe . Quando eu tiro essas funções do código, ele funciona normalmente.

Nem tem como executar arquivo não compilado. :wink:

Executa sua aplicação em linha de comando e veja o que aparece no console.

Não entendi muito bem, mas se for pela IDE, o console não exibe nenhum erro, o programa funciona normalmente, todas as funções de Manipulação de Imagem ocorrem sem problema.

Então abre pelo cmd

java -jar seuarquivo.jar

A sim, agora apareceu.

Exception in thread “AWT-EventQueue-0” java.lang.NoClassDefFoundError

Parece que ele não está encontrando a classe ManipularImagem.jar.

ManipularImagem.jar não é nome de classe

Posta o StackTrace completo.

Exception in thread “AWT-EventQueue-0” java.lang.NoClassDefFoundError: UTIL/ManipularImagem
at view.ViewCadastroCabecalho.inserir(ViewCadastroCabecalho.java:382)
at view.ViewCadastroCabecalho.(ViewCadastroCabecalho.java:44)
at view.ViewTelaPrincipal.jMenuItemEmpresaActionPerformed(ViewTelaPrincipal.java:292)
at view.ViewTelaPrincipal.access$100(ViewTelaPrincipal.java:17)
at view.ViewTelaPrincipal$2.actionPerformed(ViewTelaPrincipal.java:134)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.AbstractButton.doClick(Unknown Source)
at javax.swing.plaf.basic.BasicMenuItemUI.doClick(Unknown Source)
at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$500(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Caused by: java.lang.ClassNotFoundException: UTIL.ManipularImagem
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
… 43 more

Não tem mais nada depois do ...43 more?

Você tem o fonte da classe UTIL/ManipularImagem?
O nome do pacote é realmente UTIL em maiúsculo?

Não sei ver esses 43 more, to vendo isso pelo CMD.
O nome do pacote é util tudo minusculo, será que esse é o problema?

mas no fonte que você postou está em maiúsculo:

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package UTIL;

Siga a convenção e deixe tudo em minúsculo.

Nossa amigo, isso mesmo.
Que erro mais bobo da minha parte.
Muito obrigado.