Criando pacotes .jar

5 respostas
emanoel.almeida

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.

5 Respostas

el_loko

[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]

emanoel.almeida

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.

maquiavelbona

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

Até!

W

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

emanoel.almeida

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.

Criado 13 de abril de 2008
Ultima resposta 14 de abr. de 2008
Respostas 5
Participantes 4