O .jar não é o bastante?

Após ter criado o .jar no NetBeans, esse arquivo .jar não é o bastante para ser executado em um outro computador com jre instalado? Junto com o .jar devo levar outro arquivo junto?
Ocorre um erro quando tento “executar” o meu arquivo .jar em outra máquina.

Se sua aplicação usa alguma API que não seja padrão do Java então o JAR não é o bastante, no caso você deve usar a API de layouts do Netbeans, nesse caso você deve pegar o JAR que vem com ele (swing-layout.jar)

Olá Newbie como vc fez para gerar o .jar no netbeans ? Andei verificando isso aqui , garimpando na propria IDE e não encontrei nada ainda …eu uso o netbeans 5.0.

Adriana

Olá Adriana!

Para criar o .jar da minha aplicação/projeto no NetBeans eu faço:

Menu Build >> Build Main Project

jairelton, a aplicação em questão é um programa que usa swing e awt.
Gero o .jar mas quando tento “executar” esse .jar em outra máquina, ocorre um erro com a mensagem:

Could not find the main class. Program will exit.

Se você está usando as classes de layout do netbeans pra montar a interface, você tem que levar o jar junto, provavelmente você está.

Tente executar no console pra ver o erro:

java -jar SeuArquivo.jar

O que seria usar essas classes de layout do NetBeans? Seria aquela interface gráfica amigável do NetBeans para criação de GUI?

Quando o NetBeans cria seu arquivo .jar, ele o deixa num diretório \dist correto? Dentro deste diretório, ele também cria uma pasta lib, contendo todos os .jars necessários para sua aplicação. Não sei se é o seu caso, mas se você ‘levar’ até a outra máquina apenas o .jar do seu programa, e nao levar esta pasta lib, sua aplicacao nao roda. Veja, dentro da lib, contem o que o JairElton vem te falando, ou seja, o layout da sua interface.

Se você já está atento a este detalhe, me desculpe, mas imaginei que poderia ser isso. Um abraço.

Sim, o NetBeans cria o .jar dentro do diretório dist, mas ele não cria nenhum diretório com o nome lib.
O que significa isso?

Olha só… eu tenho muito pouca experiencia ainda, entao meus recursos acabam cedo. Mas vamos lá. Uma aplicação básica usando swing deveria ter pelo menos o AbsoluteLayout.jar.

Eu ñ sei o caminho exato, mas vá nas propriedades do seu projeto, e depois clique em Libraries. Como padrão, deve ter ao menos Absolute Layout e Swing Layout Extensions.

Verifique se há essas bibliotecas.

Há alguém aí que tenha criado uma simples aplicação com Swing e tenha tido esse tipo de problema ao portar o .jar para outra máquina?

Cria uma pasta lib junto com seu jar e coloca dentro dela o arquivo swing-layout.jar que vem junto com o netbeans.

Isso é apenas uma sugestão, ou todo programa Java que use Swing, para ter seu .jar executando em outra máquina precisa dessa pasta lib com o swing-layout.jar dentro dela?

Esse jar swing-layout.jar contem algumas classes especificas do Netbeans, usadas por alguns gerenciador de layout do Matisse e nada tem a ver com a API swing padrão. Estou dizendo pra você pegar esse jar porque eu suponho que seja ele que esteja faltando.

Eu estou usando apenas JFrame, JLabel, JMenu, JButton, JTextField, JOptionPane.
É necessário realmente esse swing-layout.jar para levar o meu .jar para outra máquina?

E qual gerenciador de layout você está usando? Provavelmente o do Netbeans não é? Aquele que você pode colocar os componentes na posição que quiser…

Pra ver o que realmente está faltando no seu jar execute ele no console:

java -jar SeuArquivo.jar

Aí vai aparecer o erro.

Não estou usando nenhum gerenciador de layouts. Gosto de programar interfaces gráficas sem ajuda desses facilitadores, colocando e posicionando cada componente visual através de código puro.

Então acredito que você setou o layout para null e posicionou os componentes com coordenadas fixas certo? E você entendeu de qual gerenciador de layout eu estou falando né?

E você fez o teste que falei, de rodar do console?

Não setei o layout para null. Usei FlowLayout().
Ainda vou fazer o teste do java -jar etc…

Acabei de fazer o teste do java -jar MeuJar.jar

Executou sem problemas.
O problema tem que ser resolvido na outra máquina para onde estou levando esse .jar

Se você usou FlowLayout então não precisa do swing-layout.jar, o que deve estar faltando é outra coisa, faça o teste no console na outra maquina que vai te mostrar o erro certinho… :wink: