Como criar ficheiros .jar (Java)
Os últimos dias têm sido passados de volta da linguagem de programação Java. Como sabemos, uma boa forma de programar envolve classes (quando a linguagem assim o permite) que por sua vez contêm métodos que realizam determinadas acções. Depois da programação de uma aplicação “razoável”, ficamos com um conjunto de ficheiros (classes), bibliotecas, conectores, que são parte da aplicação. No entanto, o interpretador do Java pode executar uma aplicação directamente de um ficheiro jar, se tiver indicações de qual a classe que contem o método main.
Como guardar/manter todos esses ficheiros num único ficheiro?
Um ficheiro Jar (Java ARchive) permite guardar de forma compactada um conjunto de classes java. Se esse conjunto contiver uma classe com o método main poderá ser executado como um programa independente, ou seja pode funcionar como um ficheiro executável. Para tal será necessário que o ficheiro .jar contenha um ficheiro adicional (por exemplo manifest.mf), onde será especificada qual a classe que contém o main.Os ficheiros .jar,são baseados no popular formato .zip.
Vamos então aprender alguns comandos importantes para para criar, ver e executar ficheiros .jar
Criar ficheiro .jar
jar cf NOME_FICHEIRO_JAR FICHEIROS_A_INCLUIR ex: jar cf MyApp1.jar C:\JavaProject\MyApp |
- A letra c indica criação do ficheiro jar
- A letra f indica que o próximo argumento é o nome do ficheiro jar a criar.
Ver conteúdo de um ficheiro JAR
jar tf JAR_NOME_FICHEIRO ex: jar tf MyApp1.jar |
- A letra t indica que deve listar a tabela do conteúdo (table of contents).
Ver conteúdo de um ficheiro JAR (com detalhe)
jar tvf JAR_NOME_FICHEIRO ex. jar tvf MyApp1.jar |
- A letra v indica que deve produzir uma saída “verbose” – inclui tamanho e data de criação dos ficheiros.
Extrair conteúdo de um ficheiro JAR
jar xf JAR_NOME_FICHEIRO ex: jar xf MyApp1.jar |
- A letra x indica que vamos extrair o conteúdo
Extrair um ficheiro específico
jar xf JAR_NOME_FICHEIRO FICHEIROS_A_INCLUIR ex. jar xf MyApp1.jar Test1.class |
Actualização de um .jar
jar uf NOME_FICHEIRO_JAR FICHEIROS_A_INCLUIR ex: jar uf MyApp1.jar Test1.class |
- A letra x indica que vamos realizar um update
Actualização de um .jar
java -jar JAR_NOME_FICHEIRO ex. java -jar MyApp.jar |
Criar um JAR executável
No caso de pretendermos que o .jar se torne “executável”, como já referido, temos de indicar qual a classe que contém o método main. Para isso, criamos um ficheiro auxiliar (ex. MANIFEST.MF) e indicamos qual a classe que possuem o método main (apenas o nome). ALém disso, podemos ainda incluir conectores, como por exemplo a indicação do conector mysql, outros ficheiros .jar, etc.
Manifest-Version: 1.0 Main-Class: MyMainClass |
Neste exemplo, a classe tem o nome MyMainClass. Para criarmos o ficheiro .jar executável, basta agora inserir o seguinte comando (devem manter as opções das opções)
jar cvfm MyApp.jar MANIFEST.MF FICHEIROS_A_INCLUIR |
Estas operações podem também ser realizadas via eclipse ou netbeans. Espero que tenham gostado e vos seja útil.
Artigos relacionados
Este artigo tem mais de um ano
Componham lá isso que aparece todo o conteúdo da noticia na home page.
Estas operações podem também ser realizadas via eclipse ou netbeans. Espero que tenham gostado e vos seja útil.
Mas NUNCA chegaram a dizer ONDE se realizava isso. Na linha de comandos, Windows, Linux, MAC? Só contam metade da história…
Em principio isso deve ser APENAS para linux porque no windows:
‘jar’ não é reconhecido como um comando interno ou externo,
programa operacional ou ficheiro batch.
A não ser que se tenha de instalar algum programa que não disseram.
Precisas de ter o JDK instalado.
… e tens de:
a) colocar a pasta do JDK na PATH;
ou
b) Fazer
cd C:\Program Files\Java\jdk[versao-aqui]\bin\
[comandos]
Algumas patentes ligadas ao Java podem render à Oracle uns mihares de milhões de dólares … a pagar pelo Google, por causa do Android. É o que diz Miguel de Icaza.
http://bit.ly/9HHYcv
Se o Google tivesse comprado a Sun era capaz de lhe ter saído mais barato.
sim mas isso nada tem a ver com o jdk SE deve ter a ver com versoes enterprise e ai claro é preciso pagar,
mas tambem podes usar o openjdk que é patrimonio da humanidade, ou seja liver open source e o que quiseres.
cmps
o que esse miguel quer sei eu…
nao é ele o responsavel pelo port do C# no projecto mono?!
ha pois é se essa treta pega ate pode ser que va é de cana.alis se essa ttreta pega ate pode ser que a ms pague uns bons milhares de milhoes a oracle pelo prejuizo que lhe tem causado ao copiar o java e dar-lhe o nome de C#.
atençao nem precisei de ler a noticia para ver o ruido que o menino quer criar no java,para afugentar a comunidade opensource do mesmo e aproxima-lo daquilo que pode e vai se tornar um buraco sem fundo extremamente lucrativo para a ms caso a malta comece a usar mono.
é triste que esses artistas se promovam dessa forma ele até é bom programador e respeitado no meio mas é como o mourinho disse quando venceu o barcelona para a liga dos campeoes “ganhei a melhor equipa do mundo, mas eles estiveram muito mal, sem valores e jogaram baixo comigo, a melhor equipa do mundo nao precisa disto” em relação ao golpe de teatro que foi montado pelo barça e que fez com que o inter ficasse reduzido a 10 jogadores.
aqui aplica se o mesmo-
se existem problemas de patentes a Google tem que ser informada e apartir dai paga una licença como todos nos fazemos se a google se recsa ai claro estão a espera de que?
claro que teem de pagar nao pagam a bem vao pagar a mal a google nao +e mais que os outros.
cmps
boas..
antes de mais parabens pelo post acho qu pode ajudar muita gente.
estou a desenvolver um prog em java mas nao quero que o codigo se veja, como poderei proteger o codigo, visto que quero portabilidade entre soś diferentes.para ja esta em jar, mas como disseram e bem este é editavel.
cmps
Em suma e para não haver problemas:
Netbeans -> Compile
Eclipse -> Compile
@lmx :
Google for: Java code obfuscation
Obrigado miguel 🙂
na altura em que escrevi não tinha grandes condições de trabalho e por isso limitei a minha acção nesse sentido, de qualquer forma fiz uma pesquisa e obtenho um monte de respostas como é normal “no melhor amigo do homen 🙂 ”
Tens alguma preferência por determinado programa?
cmps
boas eu tenho o seguinte comando java -Xms512M -Xmx512M -jar craftbukkit.jar isto inicia o meu server de minecraft mas da erro e diz que java nao e reconhecido como comando interno alguem sabe se ha soluçao?