Se existe um negócio chato no mundo é executar Java por linha de comando quando é necessário acrescentar um monte de jars no classpath. Enquanto a linha de comando está estável, tudo bem, você faz uma vez e utiliza sempre a mesma coisa. Porém quando começa a ser necessário adicionar jars, atualizar versões o negócio começa a ficar desagradável.
A solução que encontrei foi montar dinamicamente uma lista dos jars existentes em um diretório e concatenar tudo na variável de ambiente CLASSPATH. Para isso foi utilizando o comando FOR do MS-DOS (sim no DOS tem FOR, IF, só nao tem CLASS ;)).
Para conseguir isto, o interessante é adotar um padrão como o a seguir.
meuAplicativo
- lib
- executa.bat
- addpath.bat
Na pasta lib mantenha todos os jars do seu projeto.
O arquivo executa.bat segue o modelo abaixo:
@echo off
SET CLASSPATH=
dir /b "lib\*.jar" > temp.tmp
FOR /F %%I IN (temp.tmp) DO CALL addpath.bat lib\%%I
DEL temp.tmp
set CLASSPATH=.;%CLASSPATH%
java meupacote.MinhaClasse
O arquivo addpath.bat tem o conteúdo abaixo:
set CLASSPATH=%CLASSPATH%;%1
Você provalmente está se perguntando porque criar um outro bat só para setar o CLASSPATH e não fazer o set direto no FOR. Bem, pergunte ao Bill Gates, porque isso realmente não funciona.
Em Linux, como as coisas funcionam, é necessário apenas um arquivo de script para o mesmo efeito.
#!/bin/sh
export CLASSPATH=
for jarfile in ./lib/*.jar; do
CLASSPATH=$CLASSPATH:./lib/$jarfile
done
export CLASSPATH=.:$CLASSPATH
java meupacote.MinhaClasse
Também existe a possibilidade de fazer a carga dinâmica de jars pelo próprio java, usando um ClassLoader que irá aceitar a adição dos jars que você quiser. Já fiz alguns testes com essa técnica, mas ainda não funcionou do jeito que eu gostaria, então fica para um próximo post...
então é isso, abraços a todos
terça-feira, 7 de julho de 2009
Assinar:
Postar comentários (Atom)
Nenhum comentário:
Postar um comentário