corner imagecorner image
IDEPlatformPluginsDocs & SupportCommunityPartners

Empacotamento e distribuição de aplicativos Java Desktop

Uma pergunta que muitos programadores iniciantes têm é: "Agora que criei meu aplicativo no IDE, como faço para que ele funcione a partir da linha de comandos fora do IDE." De forma similar, alguém pode perguntar: "Como distribuo este aplicativo para outros usuários sem precisar dar a eles todo o IDE também?"

As respostas para essas perguntas são relativamente simples, mas não necessariamente óbvias. Este documento trata essas perguntas explicando os fundamentos do uso do IDE para preparar seus aplicativos para distribuição e implementação. Além disso, este documento fornece informações que podem ser necessárias para configurar seu sistema (ou que podem ser necessárias para passar para os usuários de seus aplicativos). Mostraremos algumas abordagens diferentes para a implementação de um aplicativo para que os usuários possam acessá-lo:

  • Clicando duas vezes no arquivo JAR do aplicativo.
  • Chamando o o aplicativo a partir da linha de comando.
  • Chamando o aplicativo a partir de um arquivo de script.
  • Usando o Java Web Start.

Conteúdo

O conteúdo desta página se aplica ao IDE NetBeans 6.9, 7.0 e 7.1

 

Para concluir este tutorial, são necessários o software e os recursos apresentados na tabela a seguir.

Software ou recurso Versão necessária
NetBeans IDE versão 6.9, 7.0 ou 7.1
Java Development Kit (JDK)

versão 6

Arquivos do código-fonte do tutorial de implementação

 


Criando o arquivo JAR executável

Esta parte do tutorial mostra como criar um aplicativo distribuível no IDE e, a seguir, executar aquele aplicativo de fora do IDE. Empacotaremos o aplicativo na forma de um arquivo JAR executável.

Um arquivo JAR é um arquivamento que pode conter vários arquivos e pastas. Arquivos JAR são similares e arquivos zip, mas arquivos JAR podem ter atributos adicionais que são úteis para distribuir aplicativos Java. Esses atributos incluem a assinatura digital de arquivos JAR, compactação adicional, compatibilidade entre plataformas etc.

Neste exercício, você criará um projeto IDE e, a seguir, colocar dois arquivos de código-fonte Java pré-escritos dentro do projeto. Em seguida, você compilará as classes e criará o arquivo JAR executável. Depois disso, você aprenderá a executar o arquivo JAR fora do IDE.

As classes usadas neste tutorial implementam recursos do utilitário GNU grep, que pode ser usado para procurar texto ou padrões de expressões regulares dentro de arquivos texto. O projeto contém versões de linha de comando e de GUI do aplicativo, para que você possa ver as diferentes formas de executar o aplicativo.

Criando um projeto com fontes existentes

  1. Baixe o arquivo DeploymentTutorial.zip e extraia seu conteúdo no sistema.
    Esse arquivo zip contém arquivos de código-fonte para o aplicativo, além de alguns outros arquivos que serão usados no tutorial.

  2. No NetBeans IDE, escolha Arquivo > Novo projeto.

  3. Na página Selecionar categoria, selecione Projeto Java com códigos-fonte existentes na categoria Java e clique em Próximo.
  4. Na página Nome e localização do assistente, digite AnotherGrep como o nome do projeto e especifique o local do projeto.
    Deixe marcada a caixa de seleção Definir como projeto principal e clique em Próximo.

    A pasta do projeto não precisa estar no mesmo local que os arquivos de código-fonte que você está importando para o projeto.

  5. Na página Códigos-fonte existentes do assistente, especifique os códigos-fonte que estarão no projeto.
    Clique no botão Adicionar pasta, à direita do campo Pastas de pacote de código-fonte. Navegue para a pasta DeploymentTutorial que você acabou de descompactar em seu sistema, expanda a pasta, selecione a pasta src e clique em Abrir. A pasta src é adicionada ao campo Pastas de pacote de código-fonte.
  6. Clique em Terminar.

    Observação: Se, por exemplo, você desejar excluir alguns arquivos de código-fonte da importação para o projeto, clique em Próximo para abrir a última janela Inclusões e exclusões. Em nosso caso, queremos usar todos os arquivos de código-fonte na pasta src, portanto clicamos em Terminar para concluir o assistente Novo projeto.

O projeto é aberto no IDE e fica visível na janela Projetos. Você pode explorar o conteúdo do projeto expandindo o nó Pacotes de código-fonte do projeto onde deverá ver classes chamadas Grep e xGrep. Grep.java é a versão de console do aplicativo. xGrep.java é a versão de GUI do aplicativo e usa os métodos definidos em Grep.java.

Configurando o projeto

Há alguns passos de configuração que são necessários:

  • Escolher a plataforma Java que será usada para copilar os códigos-fonte.
  • Definir a classe principal do projeto. Ao fazer isso, você garante que o arquivo JAR criado ao compilar o projeto será executável.

Verificando a plataforma Java

Nosso projeto precisa ser compilado e executado na plataforma Java 6. Portanto, você precisa garantir que Java 6 seja usado como a plataforma para esse projeto.

  1. clique com o botão direito do mouse no nó do projeto e escolha Propriedades.
  2. Na aba Bibliotecas, assegure-se de que a plataforma Java seja JDK 6.
  3. Na aba Códigos-fonte, selecione JDK 6 como o formato do Código-fonte/Binário.
  4. Clique em OK para fechar a janela Propriedades.

Definindo a classe principal

Para que um usuário execute facilmente seu arquivo JAR (clicando duas vezes no arquivo JAR ou digitando java -jar AnotherGrep.jar na linha de comandos), uma classe main deve ser especificada dentro do arquivo manifest do JAR. (O manifesto é uma parte padrão do arquivo JAR que contém informações sobre o arquivo JAR que são úteis para o iniciador java ao executar o aplicativo.) A classe main serve como ponto de entrada a partir do qual o iniciador java executa seu aplicativo.

Ao compilar um projeto, o IDE compila o arquivo JAR e inclui um manifesto. Ao definir a classe main do projeto, você garante que ela seja designada no manifesto.

Para definir a classe principal do projeto:

  1. clique com o botão direito do mouse no nó do projeto e escolha Propriedades.
  2. Selecione o painel Executar e digite anothergrep.xGrep no campo Classe main.
  3. Clique em OK para fechar a caixa de diálogo Propriedades do projeto.

Ao compilar o projeto posteriormente neste tutorial, o manifesto será gerado e incluirá a seguinte entrada:

Main-Class: anothergrep.xGRep

Compilando o projeto e criando o arquivo JAR

Agora que os códigos-fonte estão prontos e seu projeto está configurado, é hora de compilar o projeto.

Para construir o projeto :

  • Selecione Executar > Compilar projeto principal.
    Alternativamente, clique com o botão direito do mouse no nó do projeto na janela Projetos e escolha Compilar.

Ao compilar o projeto:

  • As pastas build e dist são adicionadas em sua pasta do projeto (de agora em diante chamada pasta PROJECT_HOME).
  • Todos os códigos-fonte são compilados em arquivos .class, que são colocados na pasta PROJECT_HOME/build.
  • Um arquivo JAR contendo o projeto é criado dentro da pasta PROJECT_HOME/dist.
  • Se alguma biblioteca foi especificada para o projeto (além do JDK), uma pasta lib é criada na pasta dist. As bibliotecas são copiadas em dist/lib.
  • O arquivo de manifesto no JAR é atualizado para incluir entradas que designam a classe principal e quaisquer bibliotecas que estejam no classpath do projeto.

Nota: é possível visualizar o conteúdo do manifesto na janela Arquivos do IDE. Depois de construir seu projeto, alterne para a janela Arquivos e navegue até dist/AnotherGrep.jar. Expanda o nó do arquivo JAR, expanda a pasta META-INF e clique duas vezes em MANIFEST.MF para exibir o manifesto no Editor de código-fonte.

Main-Class: anothergrep.xGrep
(Para saber mais sobre arquivos de manifesto, leia este capítulo no Tutorial de Java.)

Executando e distribuindo o arquivo JAR

Executando o aplicativo dentro do IDE

Ao desenvolver aplicativos no IDE, normalmente você precisará testá-los e refiná-los antes da distribuição. Você pode facilmente testar um aplicativo no qual esteja trabalhando ao executar o aplicativo a partir do IDE.

Para executar o projeto AnotherGrep no IDE, clique com o botão direito do mouse no nó do projeto na janela Projetos e selecione Executar.

A janela xGrep será aberta. Clique no botão Procurar para selecionar um arquivo no qual pesquisar um padrão de texto. No campo Pesquisar padrão, digite um texto ou um padrão de expressão regular que deseja localizar e clique em Pesquisar. Os resultados de cada correspondência serão exibidos na área Saída da janela xGrep.

Informações sobre expressões regulares que podem ser usadas neste aplicativo estão disponíveis aqui e em muitos outros locais.

Executando o aplicativo fora do IDE

Depois de concluir o desenvolvimento do aplicativo e antes de distribuí-lo, você provavelmente desejará garantir que ele também funciona fora do IDE.

É possível executar o aplicativo fora do IDE seguindo estas etapas:

  • No gerenciador de arquivos do sistema (por exemplo, na janela Meu Computador em sistemas Windows XP), navegue para PROJECT_HOME/dist e clique duas vezes no arquivo AnotherGrep.jar.

Você saberá se o aplicativo foi iniciado com sucesso quando a janela xGrep for aberta.

Se a janela xGrep não for aberta, seu sistema provavelmente não tem a associação de arquivos entre os arquivos JAR e o ambiente de tempo de execução do Java. Consulte Resolução de problemas de associações de arquivos JAR abaixo.

Distribuindo o aplicativo para outros usuários

Agora que verificou que o aplicativo funciona fora do IDE, você está pronto para distribuí-lo.

  • Envie o arquivo JAR do aplicativo para as pessoas que o usarão. Os usuários de seu aplicativo deverão conseguir executá-lo clicando duas vezes no arquivo JAR. Se isso não funcionar para eles, mostre-lhes as informações na seção Resolução de problemas de associações de arquivos JAR abaixo.

Observação: se seu aplicativo depende de bibliotecas adicionais além das incluídas no JDK, será preciso inclui-las em sua distribuição (não é o caso em nosso exemplo). Os caminhos relativos para essas bibliotecas são adicionados na entrada classpath do arquivo manifesto do JAR durante o desenvolvimento do aplicativo no IDE. Se essas bibliotecas adicionais não forem encontradas no classpath especificado (ou seja, caminho relativo) na execução, o aplicativo não será iniciado.
Crie um arquivo zip que contenha o arquivo JAR do aplicativo e a biblioteca e forneça esse arquivo zip para os usuários. Instrua os usuários a descompactar o arquivo zip, certificando-se de que o arquivo JAR e os arquivos JAR das bibliotecas estejam na mesma pasta. Execute o arquivo JAR do aplicativo.

Iniciando seu aplicativo Java

O objetivo deste exercício é mostrar algumas formas de iniciar o aplicativo a partir da linha de comandos.

Este exercício mostra como é possível iniciar um aplicativo Java das seguintes formas:

  • Executando o comando java a partir da linha de comandos.
  • Usando um script para chamar uma classe no arquivo JAR.

Iniciando aplicativos a partir da linha de comando

Você pode iniciar um aplicativo a partir da linha de comando usando o comando java. Se desejar executar um arquivo JAR executável, use a opção -jar do comando.

Por exemplo, para executar o aplicativo AnotherGrep, execute as seguintes etapas:

  1. Abra uma janela de terminal. Em sistemas Microsoft Windows, isso é feito selecionando Iniciar > Executar, digitando cmd no campo Abrir e clicando em OK.
  2. Mude o diretório para a pasta PROJECT_HOME/dist (usando o comando cd).
  3. Digite a seguinte linha para executar a classe principal do aplicativo:
    java -jar AnotherGrep.jar

Se você seguir essas etapas e o aplicativo não executar, provavelmente será preciso fazer um dos seguintes:

  • Inclua o caminho completo para o binário java na terceira etapa do procedimento. Por exemplo, digite algo como o seguinte, dependendo de onde seu JDK ou JRE está localizado:
    C:\Program Files\Java\jdk1.6.0_23\bin\java -jar AnotherGrep.jar
  • Adicione os binários Java à sua variável de ambiente PATH pra que não seja preciso especificar o caminho para o binário java na linha de comandos. Consulte Configurando variáveis de ambiente PATH.

Iniciando aplicativos a partir de um script

Se o aplicativo que você deseja distribuir é um aplicativo de console, poderá ser mais conveniente iniciar o aplicativo a partir de um script, particularmente se o aplicativo usa argumentos longos e complexos para a execução. Nesta seção, você usará a versão de console do programa Grep, na qual é necessário passar os argumentos (padrão de pesquisa e lista de arquivos) para o arquivo JAR, que serão invocados em nosso script. Para reduzir a digitação na linha de comandos, você usará um script simples, adequado para executar o aplicativo de teste.

Primeiro, é preciso alterar a classe principal no aplicativo para ver a versão de console da classe e recompilar o arquivo JAR:

  1. Na janela Projetos do IDE, clique com o botão direito do mouse no nó do projeto (AnotherGrep) e selecione Propriedades.
  2. Selecione o nó Executar e altere a propriedade Classe principal para anothergrep.Grep (de anothergrep.xGrep). Clique em OK para fechar a caixa de diálogo Propriedades do projeto.
  3. Clique com o botão direito do mouse no nó do projeto novamente e escolha Limpar e compilar projeto.

Depois de concluir essas etapas, o arquivo JAR é recompilado e o atributo Main-Class do manifesto do arquivo JAR é alterado para apontar para anothergrep.Grep.

Script BASH -- para máquinas UNIX e Linux

Dentro da pasta do sistema onde o conteúdo do arquivo DeploymentTutorial.zip foi descompactado, há um script bash grep.sh. Observe:

#!/bin/bash
                    java -jar dist/AnotherGrep.jar $@

A primeira linha declara qual o shell que deverá ser usado para interpretar isso. A segunda linha executa seu arquivo JAR, criado pelo IDE dentro da pasta PROJECT_HOME/dist. $@ somente copia todos os argumentos fornecidos, colocando-os entre aspas.

Esse script presume que os binários Java sejam parte de sua variável de ambiente PATH. Se o script não funcionar, consulte Configurando variáveis de ambiente PATH.

Mais informações sobre scripts bash podem ser encontradas aqui.

Script .bat para máquinas Windows

Em sistemas Microsoft Windows, só é possível passar nove argumentos de cada vez para um arquivo de lote. Se houver mais de nove argumentos, será preciso executar o arquivo JAR mais de uma vez.

Um script que trate isso pode ser similar a:

                @echo off
                set jarpath="dist/AnotherGrep.jar"
                set pattern="%1"
                shift
                :loop
                  if "%1" == "" goto :allprocessed
                  set files=%1 %2 %3 %4 %5 %6 %7 %8 %9
                  java -jar %jarpath% %pattern% %files%
                  for %%i in (0 1 2 3 4 5 6 7 8) do shift
                goto :loop

                :allprocessed
                    

Este script está incluído como grep.bat dentro da pasta de seu sistema, onde você extraiu o conteúdo do arquivo DeploymentTutorial.zip, portanto, é possível testá-lo.

Os nove argumentos são representados dentro do arquivo de lote por %<ARG_NUMBER>, onde <ARG_NUMBER> deve estar dentro do intervalo <0-9>. %0 é reservado para o nome do script.

Pode-se ver que somente nove argumentos são passados para o programa de cada vez (em um loop). A instrução for desloca os argumentos em nove para preparar para o próximo loop. Quando um argumento vazio de arquivo é detectado pela instrução if (não há mais arquivos a processar), o loop é encerrado.

Mais informações sobre scripts em lote podem ser encontradas nesta página.

Empacotando o aplicativo para Java Web Start

O Java Web Start é uma tecnologia que é utilizada para executar aplicativos Java a partir de um navegador da web com apenas um clique. Para obter informações detalhadas sobre como empacotar aplicativos para implementação com Java Web Start, consulte Ativando o Java Web Start no NetBeans IDE. Aqui, fornecemos apenas passos rápidos que devem ser seguidos para que seu aplicativo possa ser implementado usando Java Web Start.

  1. Clique com o botão direito do mouse no nó do projeto na janela Projetos e escolha Propriedades.
  2. Na guia Web Start da janela Propriedades do projeto, marque a caixa de seleção Ativar o Web Start.
  3. Escolha Execução local na lista suspensa Código-base (já que primeiro executaremos o aplicativo localmente).
    Deixe todas as outras configurações com seus valores padrão e clique em OK.
  4. Clique com o botão direito do mouse no nó do projeto e escolha Limpar e compilar projeto.
    Este comando do IDE exclui todos os arquivos anteriormente compilados e as saídas geradas, recompila seu aplicativo e constrói o projeto com as novas configurações.
  5. Fora do IDE, abra a pasta PROJECT_HOME/dist e abra o arquivo launch.html no navegador.
    A página HTML de teste com o botão Iniciar é aberta.
  6. Clique no botão Iniciar para abrir o aplicativo.
    Você pode ver que o Java é carregado e o aplicativo é iniciado.

    Observação: alguns navegadores redirecionam primeiro para a página de download do Java.

Dicas de solução de problemas

Especificando associações de arquivo JAR

Na maioria dos sistemas, é possível executar um arquivo JAR executável simplesmente clicando duas vezes nele. Se nada acontecer ao clicar duas vezes no arquivo JAR, pode ser por um dos dois motivos a seguir:

  • O tipo de arquivo JAR provavelmente não está associado com um Ambiente de tempo de execução Java (JRE) naquele sistema.

    Se o tipo de arquivo JAR estiver associado com um JRE, o ícone que representa o arquivo deverá incluir um logo do Java.

  • O tipo de arquivo JAR está associado com o JRE, mas a opção -jar não está incluída no comando que é passado para o JRE quando você clica duas vezes no ícone.

Observação: algumas vezes, associações de arquivos JAR são trocadas por softwares que você instala, como os softwares que tratam arquivos zip.

A forma de associar o tipo de arquivo JAR com o iniciador java depende do sistema operacional. Abaixo estão as etapas para adicionar a associação de arquivo JAR no Microsoft Windows (anterior à versão 7):

  1. Certifique-se de que haja uma versão do JRE instalada em seu sistema. Você deverá usar a versão 1.4.2 ou posterior. Não é possível iniciar um aplicativo Java se o Java não estiver instalado. (Se você tiver o JDK instalado, também terá o JRE. No entanto, se você estiver distribuindo o programa para uma pessoa que não seja programadora, não necessariamente ela terá o JRE ou o JDK.)

    No Windows XP, você pode verificar as versões instaladas do Java selecionando Iniciar > Painel de controle > Adicionar ou remover software (você verá, por exemplo, Java(TM) 6 Update 23).

    Se não houver o Java no sistema, você poderá obter o JRE no site de download do Java SE.

    Se você tiver o Java instalado em seu sistema, mas a associação de arquivos não estiver funcionando, prossiga com as etapas abaixo.

  2. Clique em Iniciar > Painel de controle.
  3. Clique duas vezes em Opções de pasta.
  4. Selecione a guia Tipos de arquivos.
  5. Na lista Tipos de arquivos registrados, selecione Arquivo JAR.
  6. Na seção Detalhes da caixa de diálogo, clique em Alterar.
  7. Na caixa de diálogo Abrir com, selecione Java Platform SE Binary.
  8. Clique em OK para sair da caixa de diálogo Abrir com.
  9. Clique em Fechar para sair da caixa de diálogo Opções de pasta.

Observação: se os arquivos JAR estiverem associados com o Java Platform SE Binary em seu sistema, mas clicar duas vezes ainda não executar o arquivo JAR, poderá ser necessário especificar a opção -jar na associação do arquivo.

Para especificar a opção -jar na associação do arquivo no Microsoft Windows XP:

  1. Clique em Iniciar > Painel de controle.
  2. Clique duas vezes em Opções de pasta.
  3. Selecione a guia Tipos de arquivos.
  4. Na lista Tipos de arquivos registrados, selecione Arquivo JAR.
  5. Na seção Detalhes da caixa de diálogo, clique em Avançado.
  6. Na caixa de diálogo Editar tipo de arquivo, clique em Editar.
  7. No campo de texto Aplicativo usado para executar ação, adicione o seguinte no final do caminho para o JRE:
     -jar "%1" %*
    Depois disso, o campo deverá conter texto similar ao seguinte:
    "C:\Program Files\Java\jre1.6.0_23\bin\javaw.exe" -jar "%1" %*
  8. Clique em OK para sair da caixa de diálogo Ação de edição para o tipo.
  9. Clique em OK para sair da caixa de diálogo Editar tipo de arquivo.
  10. Clique em Fechar para sair da caixa de diálogo Opções de pasta.

Para sistemas UNIX e Linux, o procedimento para alterar as associações de arquivos depende do ambiente de área de trabalho (como GNOME ou KDE) que você está usando. Veja as configurações de preferência em seu ambiente de área de trabalho ou consulte a documentação do ambiente.

Configurando variáveis de ambiente PATH

Se você não puder executar uma classe Java ou um arquivo JAR em seu sistema sem apontar para o local do JDK ou do JRE, poderá ser necessário modificar o valor da variável PATH do sistema.

Se você estiver executando um sistema Microsoft Windows, o procedimento para definir a variável PATH depende da versão do Windows em uso.

A seguir, estão as etapas para definir a variável PATH em um sistema Windows XP:

  1. Clique em Iniciar > Painel de controle e clique duas vezes em Sistema.
  2. Na caixa de diálogo Propriedades do sistema, clique na guia Avançado.
  3. Clique na aba Variáveis de ambiente.
  4. Na lista de variáveis do usuário, selecione PATH e clique em Editar.
  5. Adicione o local do JRE no final da lista de caminhos. Os locais nessa lista são separados por ponto e vírgula (;).
    Por exemplo, se seu JRE estiver localizado em
    C:\Program Files\Java\jdk1.6.0_23
    você deveria adiciona o seguinte no final da variável PATH:
    C:\Program Files\Java\jdk1.6.0_23\bin
  6. Clique em OK para sair da caixa de diálogo Variáveis de ambiente, e clique em OK para sair da caixa de diálogo Propriedades do sistema.

Se você estiver executando um sistema UNIX ou Linux, as instruções para modificar a variável PATH depende do programa shell que está em uso. Consulte a documentação do shell que está em uso para obter mais informações.

Próximas etapas

Para obter mais informações sobre como trabalhar com o NetBeans IDE, consulte a página Suporte e Documentação no site do NetBeans.

Para saber mais sobre o fluxo de trabalho do IDE para o desenvolvimento de aplicativos Java, incluindo o gerenciamento de classpath, consulte Desenvolvendo aplicativos gerais Java.