Criando pacotes .jar

Olá pessoal,

Sou super-iniciante em java, estou desenvolvendo um programinha pequeno(de uma unica class) com swing. Gostaria de saber como crio um arquivo .jar que seja executável em qualquer máquina com o clique do mouse.

Segue o codigo do programa.


// Importação dos pacotes tipicos/necessários para GUI

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

//Pacote extra para formatador decimal

import java.text.*;





public class Conversor extends JFrame {

 //Declaração dos componentes ativos

 private JTextField tfValor1, tfValor2;

 private JButton bLimpar, bConverter;

 // Componentes não ativos

 private JLabel lUnidade1, lUnidade2;

 //Outros elementos formatador decimal

 DecimalFormat df = new DecimalFormat("###,##0.000");


 //Implementação do contrutor

 //CONSTRUTOR

 public Conversor(){

  super("Conversor"); //ajuste do titulo ja janela



  //Instanciação dos componentes

  lUnidade1 = new JLabel("Celsius");

  lUnidade2 = new JLabel("Farenheit");

  tfValor1 = new JTextField();

  tfValor2 = new JTextField();

  bLimpar = new JButton("Limpar");

  bLimpar.setToolTipText("Limpa as Caixas de entrada");

  bConverter = new JButton("Converter");

  bConverter.setToolTipText("Efetua a conversão do valor dado");







  //Ajuste do Layout e edição dos componentes

  Container cp = getContentPane();

  cp.setLayout(new GridLayout(3,2,5,5));

  cp.add(lUnidade1); cp.add(tfValor1);

  cp.add(lUnidade2); cp.add(tfValor2);

  cp.add(bLimpar); cp.add(bConverter);


  // Registro dos Event Listeners

  bLimpar.addActionListener(new ActionListener(){

   public void actionPerformed(ActionEvent e){

    bLimparClick();

   }

  });


  bConverter.addActionListener(new ActionListener() {

   public void actionPerformed(ActionEvent e){

    bConverterClick();

   }

  });


  //Ajustes para a janela

  cp.setBackground(Color.orange);

  setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

  pack();

 }


 //limpa caixas de texto de entrada

 private void bLimparClick(){

  tfValor1.setText("");

  tfValor2.setText("");

 }



 private void bConverterClick(){

  tfValor1.setText("");

  tfValor2.setText("");

 }



  public static void main(String a[]){

  new Conversor().setVisible(true);

 }

}

Se alguem puder me ajudar, Agradeço.

[i]Cara depende da IDE que você utiliza.

No eclipse é só clicar em cima do class com o botão direito, depois clicar em “exportar” e escolher o
formato “.jar”.[/i]

Uso o jcreator por ser leve e minha maquina ser fraca. Eu queria criar na mão mesmo, no prompt. Alguem sabe. Tudo o que sei é que tem que dar um comando:

jar cvmf aquivo.jar classe arquivoinfo.mf

até que criei o arquivo.jar, mas na hora de executar o meu programa não abre. Não sei como configurar direito. Não sei criar esse aquivo com extenão.mf.

Se alguem souber, por favor me ajude.

Tutorial da sun para criação de jar-> http://java.sun.com/docs/books/tutorial/deployment/jar/

Até!

1 curtida

Como ja falaram acima, o eclipse faz isso de boa.
Mas como vc nao usa eclipse e quer fazer na mao.
A coisa mais importante dos jar files eh o MANIFEST.MF file. La vc diz dentre um monte de coisas qual a classe que vai ser executada quando vc rodar, por exemplo : java -jar .jar

O que vc precisa fazer eh adicionar informacoes extras no seu manifest, no seu caso como eh um projetinho simples, so adiciona o Main-Class.

Um jeito facil de fazer isso eh:

  1. cria um arquivo txt (por exemplo: addtomanifest.txt ) com a seguinte :

Main-Class:

ps: Lembre-se que para isso funcionar vc tem que incluir um “enter” no final dessa linha, portanto quando vc digitar o Main-Class da um enter no final.

  1. na linha de comando vc usa o comando:

jar cmvf Teste.jar addtomanifest.txt <path da onde vc ta gerando os .class quando vc compila>

ex: se vc esta compilando a sua classe para um diretorio bin/ o melhor jeito eh:

  1. editar o arquivo txt com o que vc quer adicionar no manifest.
  2. cd ./bin
  3. jar cmvf …/Teste.jar …/addtomanisfest.txt *

Qualquer coisa pergunta ae.

//Daniel

Olá pessoal, Muito legal a explicação de vocês. Consegui fazer meu pacote .jar via prompt . Só que na hora de executa-lo clicando com o mouse da dois erros:

Cold not Find the main class. e Error: A JNI arror has occurred, please chack your installation and try again.

Ai eu desisti né… baixei o Eclipse, fiz o que vocês me recomendaram e criei um arquivo jar que funcionou tudo certinho. Consegui.

Dai como fuçador proficional, descompactei o arquivo .jar que crie no eclipse pra ver a diferença do meu, e lá estava:

Misturado com meus arquivos Conversor.class, Conversor$1.class, Conversor$2.class, estavam os dois arquivos citado abaixo.

.project


<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
	<name>Conversor</name>
	<comment></comment>
	<projects>
	</projects>
	<buildSpec>
		<buildCommand>
			<name>org.eclipse.jdt.core.javabuilder</name>
			<arguments>
			</arguments>
		</buildCommand>
	</buildSpec>
	<natures>
		<nature>org.eclipse.jdt.core.javanature</nature>
	</natures>
</projectDescription>

e o arquivo
.classpath

<?xml version="1.0" encoding="UTF-8"?>
<classpath>
	<classpathentry kind="src" path="src"/>
	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
	<classpathentry kind="output" path="bin"/>
</classpath>

Eles devem fornecer alguma informação a mais pra o tipo do meu projeto. Quais são elas, vou ver se descubro funçando.

Lembrando que: eu criei outros pacotes .jar pequenos que não usam swing e funcionou muito bem. Só esse que mostrei ai que não funcionou.

A propósito, gostei bastante da ide eclipse que antes achava complicada… isso foi graças a uma apostila de 263 pg de Caelum. Que trata o aprendizado java de uma maneira bem diferente e legal. Material de primeira pra quem está iniciando em java como eu. http://www.caelum.com.br/caelum/curso-11.jsp

Obrigado vocês pela força.