Ficheiros jar - Dei-Isep

Propaganda
Criação de Programas Executáveis em Java
1. Ficheiros jar
Aplicações “desktop” Java são distribuídas (“deploy”) através de ficheiros executáveis
jar.
Os applets Java podem demorar um tempo considerável a carregar, porque se são
constituídos por vários ficheiros de classes, para transferir cada ficheiro o class loader
necessita de estabelecer uma ligação através de sockets entre o browser do utilizador e o
servidor no qual o applet existe. O estabelecimento de ligações individuais por socket
para cada ficheiro é uma tarefa que consome bastante tempo. Para que, através de uma
única ligação, o applet inteiro seja carregado, põem-se todos os ficheiros de um applet
num único ficheiro. Este ficheiro designa-se por jar (Java ARchieve) e tem um formato
que permite armazenar ficheiros .class, assim como ficheiros .java, ficheiros de áudio,
de imagem e de vídeo.
O interpretador de Java pode executar uma aplicação directamente de um ficheiro jar se
o ficheiro manifesto indicar qual a classe que contem o método main.
No Microsoft Windows, uma aplicação Java pode ser executada efectuando um duplo
clique no ficheiro jar.
O ficheiro manifesto tem o nome MANIFEST.MF e está incluído no directório METAINF do ficheiro jar. Este ficheiro pode ser criado com o utilitário jar, a partir de um
ficheiro de texto, previamente criado, chamado manifest.tmp.
Exemplo:
Consideremos que a classe que contem o método main tem o nome Exemplo (contida
no ficheiro Exemplo.java).
Ficheiro manifest.tmp:
Main-Class: Exemplo
Criação do ficheiro jar usando o utilitário jar na linha de comandos:
> jar cfm aplic.jar manifest.tmp *.*
As opções “cfm” usadas no utilitário jar, têm o seguinte significado:
 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.
 A letra m indica que o argumento seguinte na linha de comandos é o ficheiro
manifest.tmp que é usado para criar o ficheiro MANIFEST.MF no directório
META-INF do jar.
A seguir às opções, nome do ficheiro jar, e ficheiro manifest.tmp, especificam-se os
ficheiros a incluir no ficheiro jar.
Para confirmar que os ficheiros foram arquivados correctamente, pode-se executar o
comando:
jar tvf aplic.jar
que produz uma listagem do conteúdo do ficheiro jar.
As opções “tvf” têm os seguintes significados:



A letra t indica que deve listar a tabela do conteúdo (table of contents).
A letra v indica que deve produzir uma saída “verbose” – inclui tamanho e data
de criação dos ficheiros.
A letra f indica que o próximo argumento é o ficheiro jar.
2. Criação de ficheiros jar no NetBeans
Para criar um ficheiro jar no NetBeans:
1.
2.
3.
4.
5.
6.
7.
8.
9.
Seleccione o directório (package) onde pretende colocar o ficheiro jar.
Faça File > New.
Expanda o nó JAR Packages e seleccione JAR Recipe. Prima o botão Next.
Escreva o nome do ficheir jar. Prima o botão Next.
Especifique o conteúdo do ficheiro jar seleccionando os ficheiros que pretende
adicionar ao ficheiro jar e premindo o botão Add. Em seguida prima o botão
Next.
Prima o botão Generate para gerar o ficheiro manifesto.
Acrescente uma linha ao ficheiro manifesto indicando a classe principal da
aplicação ou do applet. Suponhamos que essa classe principal se chama
Exemplo.
Para uma aplicação acescente:
Main-Class: Exemplo
e para um applet acrescente
Name: Exemplo
Prima Finish. Na janela Explorer aparecerá o ficheiro jar criado.
Com o botão direito do rato no ficheiro jar seleccione Compile para compilar o
ficheiro.
3. Mecanismo de Extensões do Java
Por vezes na execução de ficheiros jar surgem erros, reportando a impossibilidade de
encontrar uma classe particular, lançando a excepção NoClassDefFoundError.
Suponhamos que a classe que tem o método main se chama Exemplo.
Quer a invocação do compilador (javac Exemplo.java) quer a invocação da Máquina
Virtual Java – JVM (java Exemplo) usam o mesmo CLASSPATH.
Contudo um duplo clique num ficheiro jar ou a execução de java –jar Exemplo.jar
(excepto se no directório bin da instalação do Java) usam o Java Runtime Environment
– JRE, que tem o seu próprio CLASSPATH.
Se a aplicação necessita de ficheiros adicionais jar, estes devem ser colocados no sub
directório lib do directório de instalação do Java para o desenvolvimento da aplicação.
Mas para serem encontrados pelo JRE, estes ficheiros podem ser colocados no sub
directório lib\ext do directório de instalação do JRE, ou então adicionados ao ficheiro
jar e referenciados no ficheiro manifesto, como o seguinte:
Manifest-Version: 1.0
Main-Class: Exemplo
Class-Path: aaa.jar bbb.jar
Created-By: 1.3.1
O mecanismo de extensões do Java permite estender a plataforma Java sem ter
problemas com a variável CLASSPATH. Para instalar uma extensão, basta copiar o
ficheiro .jar para o sub directório lib\ext do directório de instalação do JRE. Os
programas Java Plug-in e Java Web Start instalam extensões a pedido automaticamente.
Download