Gerando classpath a partir de diretório de jars ou “Lutando com versões diferentes do jdk”
Depois de quase uma tarde lutando para compilar um programa em Java, finalmente encontrei uma solução.
O problema: criar um cliente usando o Apache Axis. Até uns meses atrás funcionava sem problemas, até que eu resolvi atualizar para o Axis 1.5. Primeira bucha: o trem só compila com java 1.5. O engraçado é que antes eu usava java 1.6 e funcionava, mas na nova versão há testes que não passam com java 1.6. Até aí blz, troquei o jdk com o bom e velho update-alternatives e compilei o Axis (é, eu fiz algumas alterações).
Aí lá fui eu compilar o meu cliente, mas o negócio não ia nem com reza brava. Mantive a calma, eu sabia que o problema era com o classpath, o javac não estava encontrado as minhas libs. Fiz de tudo e nada. Após algumas horas, quando eu já estava prestes a me matricular no vestibular para filosofia, o pessoal do JUGMS me deu uma luz. O meu classpath usava o wildcard *, algo do tipo: meu_diretorio_de_libs/*. E isso funciona que é uma beleza no java 1.6, mas não no java 1.5 :O
Ok, por fim descobri que eu precisava especificar os caminhos para TODOS os jars no meu classpath. Acontece que são muitos e eu não estava afim de ficar copiando e colando por mais meia hora. Foi aí que eu me lembrei que Hard Work Does Not Pay Off e pensei: “será que não dá pra gerar o classpath usando uns pipes e awk”? E dá! Olha só, muito simples:
ls -1 diretório | awk '{ print $0 ":" }' | tr -d '\n'
Aprendi que o ls tem o parâmetro -1 para listar um arquivo por linha e que existe um tal de tr que permite apagar caracteres da entrada e já era, funciona muito bem.
Sem mais
Ha! Sem alguém souber um jeito mais esperto de fazer isso, comente aí
September 18, 2009 No Comments




