Distribuição da Aplicação Java

Bom dia pessoal,

Estou com um problema que talvez seja fácil de se resolver, porém, como sou iniciante em java estou tendo muitas dificuldades.

Quero distribuir a aplicação para o ‘cliente’.

Criei um projeto no eclipse com a seguinte estrutura:

projeto
|
->src[contém a classe man]
|
|->H2[Banco de Dados]
|
|->images[Imagens/icones da aplicação]
|
|->lib[jar do H2, Jar biblioteca serial rxtx]
|
|->messages[mensagens para internacionalização]

1º O que eu entendi consultando pela net é que devo criar uma arquivo .jar para rodar no meu cliente sem ter a IDE do Eclipse. É isso mesmo?

2º O que vou ter que ter na máquina cliente? É a JRE? Como faço para simplificar a instalação disso no meu ‘cliente’ ?

3º Dentro da pasta ‘messages’ na estrutura do meu projeto tenho os arquivos responsáveis pela internacionalização ( message.pt_Br.properties, etc ]. Eu gostaria de poder acrescentar mais aqrquivos sem ter que gerar o arquivo .jar. Porém, quando eu gero o arquivo .jar, tudo fica dentro do mesmo, inclusive a pasta ‘messages’.Apenas o banco de dados tem uma pasta criada à parte assim que inicio a aplicação pelo .jar.

projeto.jar [ Aqui fica tudo do meu projeto, inclusive imagens e mensagens ]
H2

#########

Bom, resumindo, gostaria de uma orientação de como fazer a distribuição da aplicação java quando se usa banco de dados, imagens, mensagens. Sendo que, imagens e mensagens quero ter liberdade para poder adicionar conforme necessidade sem ter que gerar o arquivo .jar novamente.

Gente, é isso, não sei se consegui expressar minhas dúvidas, ou se fiz da melhor forma.

Aceito sugestões inclusive para criar melhor as perguntas.

Obrigado!!!

Bom dia Rodrigo Ribaldo, cara a distribuição e sempre em desktop e .jar e quanto as imagens vc pode
criar outro arquivo .properties onde o programa va buscar as imagens tipow eu tenho uma aplicação
onde ele vai buscar todas as propriedades num arquivo.

olha o exemplo.

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
#Atualização de propriedades
#Fri Oct 30 10:50:26 BOT 2009
#ip.servidor=192.168.4.98:5432
#ip.servidor=10.10.2.124:5432
ip.servidor=localhost:5432
id.ponto.atendimento=P001
tipo.painel=atendimento
tipo.usuario=
tipo.chamada=hibrida
cor.proxsenha=
cor.finalizar=
cor.encaminhar=
cor.fundo=
cor.dados=
localizacao.som=/home/clodoaldo/projetos netbeans/Sons/
localizacao.relatorio=/home/clodoaldo/projetos netbeans/Relatorio/
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

olha so localizacao.som e localizacao.relatorio vai buscar em um diretorio pq
todos os meses eu adiciono relatorios novos e sons novos
acho q é isso. Espero ter ajudado

Existem algumas maneiras diferentes de você distribuir sua aplicação:

1-Você pode gerar um jar gigante contendo todas as dependências, pelo eclipse isso é possível fazendo um “runnable jar” (procura la nas opções)
2-Você pode gerar um jar contendo todas as suas classes e messages, nesse caso, ou você faz um arquivo bat que define o classpath (apontando pra cada um dos jars, incluindo o seu) ou você define a variável de ambiente. Dessa forma você pode fazer com que o arquivo de messages fique fora de um jar, mas não me lembro agora como fazer isso.
3-Você pode fazer um webstart com sua aplicação, apesar de eu sofrer de vez enquando com cache eu acho essa a melhor alternativa. Para fazer o webstart é necessário assinar todos os jars (incluindo o seu), definir um arquivo jnlp e colocar tudo num servidor web. Porém, quando a maquina cliente acessa esse arquivo jnlp o JRE abre automaticamente uma opção para instalação da sua aplicação, após instalado, cria um icone bonitão no desktop e uma opção para remover nos “programas instalados”. Além disso, toda vez que você atualizar o sistema, todos os clientes serão atualizados automaticamente.

Aconselho você utilizar a opção 3 e criar um script do ANT para gerar tudo o que você precisa (gerar o jar, assinar e já criar a aplicação web a ser atualizada). Assim quando você quiser alterar um property você atualiza o sistema e os clientes receberão automaticamente.

Olá batista.gerson

Desde já agradeço pela ajuda!

Mas ainda to com um pouco de dúvida:

Devo então gerar um arquivo .jar usando export do eclipse ‘JARFile’ e não ‘Runnable JAR File’?

Eu acho que eu tentei assim, mas dai ao clicar no .jar gerado nada acontecia, será que é problema do tal do classpath, vc poderia m,e orientar em como usar isso? Onde eu defino esse classpath, o que eu preciso colocar nele e como?

Usando o eclipse né?

Pois bem, sou totalmente leigo mesmo nesse assunto de classpath e .jar no Java.

Se puder me orientar, fico agradecido!

Obs: Esta aplicação vai rodar apenas em uma máquina, não vai ter servidor. Foi um requisito do ‘cliente’ meu amigo.

Obrigado!

Olá O Grande Bé

Obrigado pela ajuda!

Pelo que pude entender a melhor opção vai ser a 2º pois não vai haver um servidor, a aplicação vai rodar em uma única máquina no ‘cliente’ , foi requisito dele.

Só que sou leigo mesmo nesse assunto de classpath e .jar.

Vc disse sobre criar um bat que define o classpath. O que seria isso e como eu faço? Isso vai alterar a variável de ambiente na máquina cliente? Se sim, não posso correr o risco de apagar algo que o classpath do cliente definiu e parar de funcionar as coisas lá? Sei lá, o classpath lá na máquina dele estiver apontando para alguma aplicação dele.

Mesmo assim já lhe agradeço!

Valeu…obrigado

Vamos la, saber oq é um classpath e como configurar é básico, então o google ajudaria, olha ai:
http://www.guj.com.br/article.show.logic?id=108

Quanto a rodar na maquina cliente, a aplicação vai rodar nela, o servidor vai servir só pra distribuição, você pode colocar na internet, num lugar que hospeda sites gratuitos, ou numa maquina da rede do seu cliente. Serve só pra facilitar a atualização e instalação do sistema.

E não respondi na outra mensagem mas vc vai precisar do JRE instalado em todas as máquinas q vão rodar o sistema.

Nessas respostas ai em cima vc tem varias palavras chaves, pra compreender melhor, é só usar o google.

Olá O Grande Bé

Mais uma vez obrigado!

Eu procurei sim no google, inclusive já li esse artigo sobre o classpath, o problema é que eu to confuso desse CLASSPATH com o classpath que se defini no tal do Manifest que tem a ver com o .jar gerado, entendeu?

Qual a relação deles?

Tá uma bagunça na minha cabeça:

CLASSPATH -
BUILDPATH -
PATH
CLASSPATH DO AQRQUIVO MANISFEST

Outra coisa é com relação ao servidor que vc comenta. No caso do meu ‘cliente amigo’ ele não tem acesso a nenhuma outra máquina ela está isolada do mundo, é uma requisição dele. Ou seja, continuo achando que a segunda opção sua seja melhor p meu caso.

Porém , ainda tenho essas dificuldades com relação as pastas images e messages

Mesmo assim mais uma vez obrigado!

No caso, talvez seja a melhor opção mesmo.

O classpath do manifest teoricamente é o mesmo q vc define com variavel de ambiente ou na linha de comando. Porém, nunca consegui fazer essa joça funcionar.
No caso a melhor coisa é vc fazer assim:
javaw -classpath jar1.jar jar2.jar seujar.jar br.com.suaempresa.ClasseMain

coloca esse comando num bat e seja feliz

Olá batista.gerson

Será que vc poderia me mostrar trecho do código para capturar esses arquivos:

ocalizacao.som=/home/clodoaldo/projetos netbeans/Sons/
localizacao.relatorio=/home/clodoaldo/projetos netbeans/Relatorio/

O que vc usa?

obrigado