[RESOLVIDO] Problemas de Execução .JAR, me Ajudem!

65 respostas
Hewerson

Eu criei um aplicativo Java Básico de cadastro de clientes, venda de produtos, algo assim para avaliação de um curso que fiz, porém estou com um probleminha que queria solucionar. Eu executo meu aplicativo no netbeans 6.8, ele funciona ok, gera relatorios pesquisas e tudo mais, mais o meu problema é o seguinte, ao transformalo em .JAR, algumas das janelas não abrem e outras sim, já revisei o codigo, todo ok. Só uma coisa como muito dos forms eram parecidos, eu apenas copiei e colei e mudei o código de execução neles, tem algum problema isso? Me ajudem, estou com essa dúvida a tempos. Obrigado

65 Respostas

Diabo_Loiro

Testa em outra maquina, sua descrição esta meio abstrata.

De preferencia debug o codigo para detectar onde esta o erro.

Hewerson

Seguinte, criei um aplicativo no NetBeans, Transformei em JAR, mas alguns intens de menus e botoes funcionam na execução no netbeans, mas no .Jar não.

juliocesarss

A pasta lib com todas as bibliotecas está no mesmo endereço do .jar?

Como vc usou relatorio e tal, precisou de algumas bibliotecas certo? Elas tem que estar em uma pasta chamada lib no mesmo diretório do .jar.

Caso isso estaja ok, tente rodar o .jar pelo dos e vejo o erro que ele gera e poste aqui.

Hewerson

juliocesarss sim, todas as bibliotecas foram exportadas, vou executar pelo DOS para ver os erros. só entendo porque executa ok no netbeans, e no JAR não, ao clicar nos JmenuItem, não abre nada. somente alguns que abrem.

juliocesarss

Isso é normal acontecer ja que o Netbeans proporciona o ambiente preparado para a execução do programa.

Quando se gera o .jar pode acontecer de faltar algo, fazendo com que o programa não funcione fora da IDE.

Tenta ae e posta o erro

Hewerson

Ok’, mas tarde volto ao trampo e posto o erro, pois não estou com o JAr aqui. Ao criar o aplicativo, coloquei todas as biblitotecas necesarias na pasta lib.
Pode ocorrer algum erro, se eu colar os forms e mudar os codigos, tem algum problema dele não executar?

juliocesarss

Creio que não… se vc fez tudo certinho… eu mesmo ja fiz isso também.

Qualquer coisa vc posta o arquivo junto com o banco que eu olho aqui.

Hewerson

Ok’ vou postar ele mais tarde, somente o JAR, ou codigo fonte?

juliocesarss

Posta o .jar junto com as libs e o banco.

Senão eu não consigo rodar aqui.

Que banco ta usando. MySql?

Hewerson

Acess SQL, e digo onde colocar o banco, so colocar as pastas no C:/. foi o diretorio que usei.

juliocesarss

blz… zipa tudo e me manda e fala onde eu tenho que colocar.

Em último caso vc me posta o arquivo do netbenas dai eu rodo aqui e vejo o código

Hewerson

Cara acho mais fácil enviar, tudo. pois não vou ter nenhum lucro financeiro com esse projeto, pois ele é pessoal, somente para avaliação do curso. e tambem olhei, todos os VisibleTrue estao abilitados corretamentes.

juliocesarss

Você que manda cara… faz o que vc achar melhor.

Tranquilo… vo pega nada seu não… sei como é precisar da coisa funcionando e o treco só da pau.

Hewerson

Quero somente o conhecimento, código fonte, a gente faz toda hora kkkk.

Hewerson

Beleza, juliocesarss. ta ae segue em anexo Banco, Jar, e Relatorios.

juliocesarss

Não consigo baixar… Na verdade não ta nem carregando a página… não sei pq =S

Hewerson

Cara o link ta ok, tenta usa o FireFox, ou o Google Chrome

Hewerson

è cara realmente tou tentando abri aqui e nao tou conseguindo, não sai de uma tela de loading. manda teu msn, como emnssagem pra mim, poder te mandar os arquivos

Hewerson

Opa consegui abrir aqui, tenta ae de novo, deve ser o Servidor do 4Shared, que ta em manutenção.

juliocesarss

Consegui aqui… Vo teste e ja te falo…

Posso colocar a pasta em qualquer lugar ?

Hewerson

Cara assim, bom seguir as instruções que mandei em txt. pois algumas funcionalidades, so funcionam se seguir estas instruções. como relatorios

juliocesarss

Belza… consegui executar o programa aki.

Mas antes, cade as bibliotecas do jasper? Sem elas não vai gerar nenhum relatorio

Hewerson

cara elas estão dentro do aplicativo. pois quando mi ensinaram disseram que era so colocar no netbeans, nas pastas de biblioteca, que assim que gerasse o .JAR funcionaria, mais olha ae o problema que te digo, é alguns itens que não abri. e já revisei maioria do codigo

juliocesarss

Não… como eu te disse nos primeiros tópicos… todoas as bibliotecas, não só do jasper mas de conexão, etc tem que esta em um psata chamada lib no mesmo diretório do .jar

Eu rodei pelo dos e vi os erro aki.

Ta dando erro na hora de abrir outras telas neh… posta o código que vc usa pra chamar outro Frames.

Eu tenho um programinha feito aki … eu vo upa ele e posto pra vc baixar e ver como funciona as parada das bibliotecas.

Hewerson

Tenho de criar uma pasta por fora do JAR, ou dentro do JAR.??

Hewerson
//Intem menu para visualisar consulta
    private void jMenuItem2MousePressed(java.awt.event.MouseEvent evt) {                                        
        new ConsultaPessoa1().setVisible(true);
    }                                       

    //Botão atalho para visualisar cadastro
    private void jButton1MouseClicked(java.awt.event.MouseEvent evt) {                                      
       new CadastroTeste().setVisible(true);
    }                                     

    //Item menu Cadastro Cliente
    private void jMenuItem1MousePressed(java.awt.event.MouseEvent evt) {                                        
        new CadastroTeste().setVisible(true);
}                                       

    //Botão atalho para visualisar consulta
    private void jButton2MouseClicked(java.awt.event.MouseEvent evt) {                                      
     new ConsultaPessoa1().setVisible(true);
    }                                     

    //Item menu Cadastro produto
    private void jMenuItem3MousePressed(java.awt.event.MouseEvent evt) {                                        
        new CadastroProduto().setVisible(true);
    }                                       

    //Item menu Cadastro fornecedor
    private void jMenuItem4MousePressed(java.awt.event.MouseEvent evt) {                                        
        new CadastroFornecedor().setVisible(true);
    }                                       

    //Botao Cadastro fornecedor
    private void jMenuItem5MousePressed(java.awt.event.MouseEvent evt) {                                        
    new CadastroFornecedorProduto().setVisible(true);
    }                                       

    //Botao Cadastro produto
    private void jButton3MouseClicked(java.awt.event.MouseEvent evt) {                                      
     new CadastroProduto().setVisible(true);
    }                                     

    //Atalhos
    private void formKeyPressed(java.awt.event.KeyEvent evt) {                                
            //Atalho Cadastro teste
        if (evt.isControlDown() && evt.getKeyCode() == 65)
                new CadastroTeste().setVisible(true);
            //Atalho Consulta pessoa
        if (evt.isControlDown() && evt.getKeyCode() == 69)
                new ConsultaPessoa1().setVisible(true);
    }                               

     //Botao Cadastro fornecedor
    private void jButton4MouseClicked(java.awt.event.MouseEvent evt) {                                      
       new CadastroFornecedor().setVisible(true);
}                                     

     //Botao Cadastro Usuario
    private void jButton5MouseClicked(java.awt.event.MouseEvent evt) {                                      
        new CadastroUsuario().setVisible(true);
    }                                     

    private void jMenuItem6MousePressed(java.awt.event.MouseEvent evt) {                                        
new venda().setVisible(true);
    }                                       

    private void jMenuItem7MousePressed(java.awt.event.MouseEvent evt) {                                        
    new CadastroFunc().setVisible(true);
    }                                       

    private void jMenuItem8MousePressed(java.awt.event.MouseEvent evt) {                                        
     new CadastroFuncao().setVisible(true);
    }                                       

    private void jMenuItem9MousePressed(java.awt.event.MouseEvent evt) {                                        
     new relVenda().setVisible(true);
    }                                       

    private void jMenuItem10MousePressed(java.awt.event.MouseEvent evt) {                                         
    new relTdVenda().setVisible(true);
    }                                        

    private void jMenuItem11MousePressed(java.awt.event.MouseEvent evt) {                                         
        new ColsultaProduto().setVisible(true);
    }                                        

    private void jMenuItem12MousePressed(java.awt.event.MouseEvent evt) {                                         
     new relFornProd().setVisible(true);
    }                                        

    private void jMenuItem13MousePressed(java.awt.event.MouseEvent evt) {                                         
     new ConsultaFuncionario().setVisible(true);
Hewerson

Posta ae o programainha :slight_smile:

juliocesarss

Hum.

Tenta assim.

seuFormulario nomeQualquerParaObjeto = new seuFormulario(this,true);
nomeQualquerparaObjeto.setVisible(true);

desculpa a demora… caiu a net aki no serviço.

To tentando upar la… só que ta dando erro… jaja eu posto

juliocesarss

Consegui upar la…

Olha… Serio mesmo… não liga pro visual, não liga pra funcionalidade … pra nada nisso.

Eu dava a mínima pra layout e mal sabia mexer com Java… nem usei BD nisso pra vc ter uma idéia.

Só olha na pasta onde for instalar e ve la como que tem que ficar… la tem o .jar… apasta lib com as bibliotecas, pasta relatorios e etc.

http://www.4shared.com/file/rTEa0Zh2/Gerador_de_Curriculum.html

juliocesarss

Douple post… segunda vez que isso acontece comigo hj ><

Hewerson

private void jMenuItem2MousePressed(java.awt.event.MouseEvent evt) { ConsultaPessoa1 cn_pessoas = new ConsultaPessoa1(this,true); cn_pessoas.setVisible(true); }

juliocesarss

Isso…

Você ja tava usando assim?

Se não troca todos por esse e gera o .jar de novo.

Hewerson

so que está dando erro na hora de criar o novo eobjeto com o new

cannot find symbol

Hewerson

ele está pedindo para eu criar um construtor na classe ConsultaPessoa1

juliocesarss

Isso…

Pode clikar na lampada que ele cria o método sozinho.

Dai vc vai fazer o seguite.

Perceba que ja existe um método contrutor no formulário, é um que tem initComponents(); dentro, e mais alguma coisa que vc deve ter colocado.

Você vai copiar tudo que está dentro desse método construtor e copiar nese novo que você acabou de criar, ou seja ou dois devem ser iguais… tenta ae

Hewerson

copio aquele codigo para chamar a Jframe.

ConsultaPessoa1 cn_pessoas = new ConsultaPessoa1(this,true); cn_pessoas.setVisible(true)

dentro deste ConsultaPessoa1(Menu aThis, boolean b) { throw new UnsupportedOperationException("Not yet implemented"); }

adriano_si

Porque que teve que mudar essa chamada de Tela ??? Quando eu chamo uma tela direto de um componente Swing sempre faço

new MinhaTela().setVisible(true);

Ou dentro do construtor da Tela coloco o setVisible(true) e chamo a tela só criando um novo Objeto dela…

Abs []

juliocesarss

Exemplo de formulario.

//Esse é como se fosse seu formulario consultaPessoa1


//Esse é o metodo Contrutor padrão da classe
//Perceba que dentro dele tem algumas opções de tamanho  que eu mesmo coloquei
public FormAlocacao() {
        initComponents();


        java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
        setBounds((screenSize.width - 280) / 2, (screenSize.height - 310) / 2, 280, 310);
    }


//E esse é o metódo Contrutor que ele pede pra criar, observe que dentro dos () tem como parametros o FormMenu, que é o Formulario que esta abrindo esse meu Formulario
    FormAlocacao(FormMenu aThis, boolean b) {
        initComponents();


        java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
        setBounds((screenSize.width - 280) / 2, (screenSize.height - 310) / 2, 280, 310);
    }

//Ali dentro voce deixa igual ao primeiro método, Observe que o conteúdo dos dois estão iguais.

Espero ter sido claro agora x)

Hewerson
ConsultaPessoa1
public class ConsultaPessoa1 extends javax.swing.JFrame {
    //Variavel conexao com o banco
    private static final String driver =  "sun.jdbc.odbc.JdbcOdbcDriver";
    private static final String url = "jdbc:odbc:teste" ;
    private static final String login ="" ;
    private static final String pwd ="" ;
    private Connection con;
    private Statement statement;
    ResultSet rs;
    String nome;
    String sql;

    public ConsultaPessoa1() {
        initComponents();
    }

    ConsultaPessoa1(Menu aThis, boolean b) {
        throw new UnsupportedOperationException("Not yet implemented");
        initComponents();
    }

Menu

public class Menu extends javax.swing.JFrame {


    public Menu() {
        initComponents();
    }

    @SuppressWarnings("unchecked")
    

    //Intem menu para visualisar consulta
    private void jMenuItem2MousePressed(java.awt.event.MouseEvent evt) {                                        
        ConsultaPessoa1 cn_pessoas = new ConsultaPessoa1(this,true);
        cn_pessoas.setVisible(true);
    }
Hewerson

erro

unreachable statement

juliocesarss

Isso.

Só que tira esse linha

throw new UnsupportedOperationException("Not yet implemented");

Dai os dois vão ficar iguais.

Deixa eu te tenta explicar o pq disso tudo.

Não sei se vc sabe pra que serve o método Contrutor, serve pra iniciar uma classe com determido atributo.

Exemplo, vamo supor que no método Contrutor padrão(aquele que ja tem quando vc cria o formulário) eu set o tamanho do formulario em 800x600.

Isso quer dizer que quando eu abrir o formulário ele vai abrir com esse tamanho que eu defini.


Agora, esse outro método construtor vai servir para o outro form, no caso, o menu, possa abri o consultaPessoa1 a partir desse método.

Então supondo que eu defina nesse novo método construtor o tamanho formulario como 1024x768. Então agora quando eu abrir o formulario pelo menu ele vai usar o esse segundo método Contrutor que esta com o tamanho de 1024X768.

Por isso deixamos os dois iguais, para que ele abra do mesmo jeito para ambos os casos.

Meio difícil de explicar.

Não sei se consegui ser claro o bastante.

Alguem me corrija ae se eu estiver errado.

Vai ficar assim

public ConsultaPessoa1() {  
         initComponents();  
     }  
   
     ConsultaPessoa1(Menu aThis, boolean b) {  
         initComponents();  
     }
Hewerson

Funfa não cara. esse Java tem vida kkkk

JennyMelo

oi... eu passei pelo mesmo problema... tbm copiei e colei os formulário e so modifiquei o código
de acordo com q eu precisava. No meu caso eu precisei refazer alguns formulário pois naum estavam sendo reconhecidos...

Naum sei como vc faz pra instânciar o formulário mais talvez isso possa ser o problema...
eu faço assim e funciona perfeitamente...

private void TramitacaoProcessosActionPerformed(java.awt.event.ActionEvent evt) {                                                    
        // Formulário de tramitacao
        FormCadastrarTramitProcesso T = new FormCadastrarTramitProcesso(this, true);
        T.setVisible(true);
        dispose();

    }
Hewerson
JennyMelo, eu usava está forma aqui:
private void jButton1MouseClicked(java.awt.event.MouseEvent evt) {                                      
       new Consultapessoa1().setVisible(true);
    }

Agora estou utilizando assim:

private void jMenuItem2MousePressed(java.awt.event.MouseEvent evt) {                                        
        ConsultaPessoa1 cn_pessoas = new ConsultaPessoa1 (this,true);
        cn_pessoas.setVisible(true);
    }
Ainda criei o metodo construtor, que estava pedindo
public ConsultaPessoa1() {
        initComponents();
    }

    ConsultaPessoa1(Menu aThis, boolean b) {
         initComponents();
    }

Mais Ainda não funfou no .JAR cry cry :cry:

juliocesarss

Eu fiz um arquivinho simples no NetBeas só pra vc ver como funciona … da uma olhada ae.

Hewerson

Valeu cara. dah uma olhada aqui.

JennyMelo

E isso mesmo juliocesarss… os dois metodos construtores devem ter os mesmos componentes…

Hewerson

Que foi que eu fiz de errado, tou usando exatamente como você me disse, e nao está funcionadno no JAR

juliocesarss

Conseguiu trocar tudo?

No netBeans Funcionou? Se funcionou me manda agora o .jar atualizado que eu vou ver aki.

E se possivel as suas bibliotecas

Hewerson

JAR

juliocesarss

Eu vi o erro aqui.

Você usa alguem código de relatório dentro desse Frames?

Ele da dando erro na bibloteca do jasper, ele não a encontra.

Como eu disse no começo. pega todas as bibliotecas e coloca numa pasta lib no mesmo diretório do .jar

Hewerson

cara essi consulta pessoa nao utiliza nao, er apenas para consultar os clientes.

Hewerson

Cara era só por causa das lib, professor filho duma egua, não explicou isso não. pegar mnnha grana de volta kkkkkk

Hewerson

Agora tem, como anexar essas libs, dentro do jar?

Hewerson

Funfou \o. pow galera valeus

juliocesarss

Era isso que eu estava tentando te dizer desde o começo.

Mas rlx são coisas que acontecem, e tem coisas que nós mesmo temos que correr atras, não se aprende tudo com as aulas.

Em relção a anexar, eu creio que não, além do mais vc não vai fazer um programa com um arquivo só.

Vc ja viu outros programas instalados, tem o exe tem a pasta data e assim por diante,o seu vai ter o .jar, a lib , relatórios e etc.

Espero ter ajudado ae… Qualquer coisa só chamar ^^

Hewerson

Agora nao ta gerando relatorio kkk

Hewerson

Bibliotecas

http://www.4shared.com/file/0EL4YXLv/biblioteca.html

juliocesarss

Edita o primeiro tópico e coloca [Resolvido]

Hewerson

Ainda falta resolver os relatorios, que não ta gerando.

Hewerson

Resolvi, tava faltando os arquivos no diretorio

T

juliocesarss:
Eu fiz um arquivinho simples no NetBeas só pra vc ver como funciona … da uma olhada ae.

Boa tarde.
Comecei a fazer um projecto de registo de clientes para uma oficina de mecânica. Mas depois de terminado o projecto não consigo gerar o JAR correctamente, pois quando tento executar o .JAR através da linha de comandos dá o erro:

Exception in thread main java.lang.NoSuchMethodError: calculateSecurityWarning

Position

at java.awt.Window.initIDs(Native Method)

at java.awt.Window.(Unknown Source)

at MainAuto.main(MainAuto.java:18)

Mas se fizer RUN no netbeans 6.9.1 funciona bem!
Depois de ter lido este tópico fiz o download da citação que fiz! E o curioso é que me dá o erro, Could not find the main class: construor.Menu.
E todos os projectos simples que faço dão o mesmo erro!
Já configurei as variáveis de ambiente de forma correcta.
Tem alguma ideia do que poderá ser?

Cumps, Tiago

Hewerson

Cara seu problema pode ser apenas no metodo main, posta o codigo ra mim da uma olhada, ver no que posso lhe ajudar.

Hewerson

Cara, cria uma pasta chamada lib no mesmo diretorio do JAR, e colcoa as bibliotecas do projeto.

T

Bem muito obrigado pela atenção!
Mas já consegui resolver o meu problema! eu ainda tinha a versa 6 update 11 do java, mudei para a update 23 e resolveu-se o meu problema! :lol:

Pois tinha a pasta lib junto do JAR e no manifest a class main estava correcta.

Criado 11 de janeiro de 2011
Ultima resposta 14 de jan. de 2011
Respostas 65
Participantes 6