Como montar um .jar?

Olá pessoal, preciso montar um .jar para meu programa da faculdade. Não tenho nem idéia de como começar, apenas sei que esse o .jar é que executará meu programa onde eu o instalar. Não estou usando nenhuma IDE sofisticada, (nem sei usá-las) apenas o JCreator. Gostaria de uma ajuda para aprender como montar, ou como fazer esses arquivos .jar (JAR de Java Archive).
Obrigado.

Se vc estiver desesperado pra criar um jar, mas o seu vive dando erro, ou não consegue rodar um bendito programa que só roda dentro do Eclipse, então a resposta é o Plugin Fat Jar.

Ele cria um jar que (diferente do Jar criado pelo Eclipse) já vem pronto para ser rodado através do comando “java -jar nome_arquivo.jar”.

http://fjep.sourceforge.net/ <-- aqui tem um tutorial muito simples

http://sourceforge.net/projects/fjep/ <-- download dos arquivos

O que ele faz é incluir tudo o que vc precisa pra rodar, o problema é que ele comete algumas redundâncias. Mas se vc está no limite da data de entrega de um trabalho, este plugin quebra um galhão!

Vamos criar um diretório qualquer para o nosso projeto, eu criei um diretorio chamado “jarfiles”, (que de agora em diante será chamado de diretório RAIZ) e dentro dele criaremos mais alguns diretórios:
src - diretório onde colocaremos nossos arquivos fonte
bin - diretório onde colocaremos os arquivos compilados

E dentro do diretorio “src” criaremos mais um diretório chamado “init”, é um nome qualquer apenas para mostrar como fazer para rodar um arquivo que estará dentro dele, e para demostrar que é possível criar diversos diretórios e colocá-los todos no nosso .jar.

Agora que já temos os diretórios iremos criar duas classes dentro do diretório “src/init”, são elas:

OlaMundo.java

package init;

/**

  • @author Dayvid Lima
    */

public class OlaMundo {
public void falaOla(){
System.out.println(“Olá mundo cruel!”);
}
}

UsaOlaMundo.java

package init;

/**

  • @author Dayvid Lima
    */

public class UsaOlaMundo {

public static void main(String[] args){
OlaMundo om = new OlaMundo();
om.falaOla();
}
}

Prontinho, agora vamos compilar nossos códigos java para dentro do diretório bin, para isso uma vez estando dentro do diretório RAIZ no prompt do DOS ou em um terminal qualquer, vamos digitar:
javac src/init/*.java -d bin/

Isso fará com que os arquivos .java que estão em /src/init/ sejam compilados e colocados em /bin/init/.

Para ver se está tudo ok iremos rodar nossa aplicação, primeiro entramos no diretório “bin”, e então executamos nossa aplicação com o comando:
java init.UsaOlaMundo

Se tudo der certo veremos a mensagem “Olá mundo cruel!” na tela.

Bom agora que tudo está ok chegou a hora do que realmente interessa, compactar todos esses arquivos em um único arquivo .jar e rodar a aplicação a partir dele.

Para criar o arquivo .jar iremos fazer uso do comando “jar”, existem diversas opções que podemos passar para o comando jar, iremos nesse artigo fazer uso das seguintes:
c - cria um novo arquivo
v - modo “verbose”, mostra na tela o que está acontecendo
f ARQUIVO_JAR - especifica o nome que queremos para o arquivo .jar
m ARQUIVO_DE_MANIFESTO - inclue o arquivo informado como arquivo de manifesto (veremos isso na segunda parte da explicação)

Ainda dentro do diretório bin, tudo que temos que fazer para criar nosso .jar é executar o comando:
jar cvf Ola.jar init/*

Pronto, com isso temos nossa aplicação agora dentro do arquivo Ola.jar, vamos então executá-la, para fazer isso devemos informar no classpath onde está nossa aplicação (no caso a classe init.UsaOlaMundo),
Podemos tanto colocar o arquivo Ola.jar no nosso classpath quanto informar esse parâmetro no momento da execução como no comando abaixo:
java -classpath Ola.jar init.UsaOlaMundo

Muito bom, meus parabéns, agora você tem a sua aplicação toda em um arquivo só, pois bem, vamos facilitar um pouco mais as coisas.

Se olharem dentro do arquivo Ola.jar (abram ele com um compactador qualquer como Winzip ou Winrar, pois ele é apenas um arquivo compactado sem utilizar compressão, isso mesmo, você poderia ter simplesmente criado um arquivo .zip ou .rar com o seu compactador preferido informando a ele para não utilizar compactação, apenas adicionar os arquivos e depois renomear o mesmo para .jar que ainda assim funcionaria.

Enfim, voltando a aplicação, veja que dentro dele temos um diretório META-INF contendo o arquivo MANIFEST.MF, pois bem, esse arquivo contém informações sobre a nossa aplicação, como não criamos esse arquivo, ele tem apenas algumas informações básica, vamos então criar o nosso MANIFEST.MF e ver em que ele pode nos ajudar.

Quando executamos nossa aplicação vocês se lembram que tivemos que infomar no classpath o arquivo Ola.jar para que fosse possível rodar a classe “init.UsaOlaMundo”, agora iremos criar um arquivo de manifesto para que seja possível rodar nossa aplicação informando apenas o arquivo Ola.jar e não mais o nome da classe e pacote (init.UsaOlaMundo).

Para isso criaremos o nosso próprio MANIFEST.MF, salvem o código abaixo em um arquivo chamado MANIFEST.MT dentro do diretório “bin”.

Manifest-Version: 1.0
Created-By: Dayvid Lima
Main-Class: init.UsaOlaMundo

O mais importante aqui é a última linha “Main-Class: init.OlaMundo”, aqui eu digo qual classe será chamada quando o arquivo Ola.jar for executado.

Arquivo salvo, estamos prontos para continuar. Dentro do diretório bin vamos apagar o nosso antigo Ola.jar e criar um novo, agora informando qual arquivo de manifesto que iremos utilizar,
Para isso basta mudar um pouco nosso comando jar como no exemplo abaixo:
jar cvfm Ola.jar MANIFEST.MF init/*

Agora para rodar nossa aplicação precisamos apenas do comando abaixo:
java -jar Ola.jar

E o arquivo MANIFEST.MF se encarrega de dizer a virtual machine qual a classe que queremos que seja executada.