Como setar CLASSPATH varios jar´s

6 respostas
LN2EE

olá galera,

tenho que setar uns 12 jar´s no CLASSPATH, porem não gostaria de fazer isso setando nas variaveis de ambiente, pois teria que fazer isso em todas maquinas…

é possivel setar todos os jar, na sessão, fazendo um .bat, por exemplo ??e quando fehar a aplicação, “matar” esses jar´s ?

obrigado…

6 Respostas

Leandro

Você pode setar tudo isso no classpath, separando os jars por “;” (ponto e vírgula)… OOUU usando o parâmetro -classpath (-cp se não me engano) do java.exe.

Ex.:
java -cp jar1.jar;jar2.jar;jar3.jar MeuPrograma
claudio

Bom, outra maneira eh nao setar no classpath mas colocar todos os seus jars no diretorio lib/ext da jre:

c:/<j2sdk_dir>/jre/lib/ext

Caso a pasta ext nao exista vc pode cria-la que vai funcionar numa boa!

Abraco,

Bani

E você também pode setar o classpath apenas para um prompt do DOS dando SET CLASSPATH=%CLASSPATH%;jar1;jar2
Isso é o que scripts de inicialização tipo o do Tomcat costumam fazer.
Fica válido apenas naquela janela, e enquanto ela estiver aberta.

Guilherme_Silveira

Evite ao MAXIMO colocar arquivos jar no lib/ext, problemas de versao sao as coisas mais faceis de aparecer… do mesmo jeito que pode acontecer se voce comecar a colocar no classpath geral (no windows2000 naquelas variaveis globais ou win98 & compativies no CLASSPATH geral)…

Resultado: evite ao maximo colocar jar’s no classpath global e use somente scripts que usem o -cp ou -classpath (depende da versao do compilador)…

Pq? Exemplo do q pode acontecer:

idk_util.jar: versao 1.3 do intershop util pra java… voce coloca no seu classpath geral da maquina e roda seus programas numa boa

Um mes depois sai a versao 2.0 e voce coloca no classpath de um script ou do usuario ou em qualquer outro lugar de classpath (ate mesmo WEB-INF/lib)…
O seu codigo nao funciona? Ele estara lendo o 1.3 ou o 2.0 variando de acordo com o programa que voce estiver usando (apesar de 99% continuar usando o 1.3)… e ate perceber que o erro eh q vc ta usando a versao antiga e nao a nova… demora… no comeco vc acha q a versao nova ta com algum problema (o q faria sentido)…

portanto, evite usar variaveis globais de sistema… use scripts (.bat .sh ou .qq coisa em qq sistema)…

o tomcat mesmo ainda usa aquela variavel global que eu odeio que eh a CATALINA_HOME ou TOMCAT_HOME dependendo da versao… acontece a mesma coisa… vc tem 5 tomcats instalados, tenta iniciar um, mas ele inicia o outro (mas vc roda o script CORRETO)…

cuidado com “globais”

ozielneto

O que o Guilerme alertou é muito importante.

Vale observar o seguinte:

jre/lib/ext - coloque aqui pacotes de classes que serão usados por TODAS as aplicações, e numa possível atualização, verificar se TODAS as aplicações podem usar uma versão diferente. Ex. Driver para DB.

WEB-INF/lib - coloque aqui pacotes de classes que serão usados PELA APLICAÇÂO somente. Assim voce garante a compatibilidade de versões e elimina muitos problemas.

Dependendo do ApplicationServer, eles ainda possuem CLASSLOADERs para ele próprio, e que podem usados tbm para a carga de classes.

[]´s

LN2EE

pessoal,
obrigado pela ajuda, pelas dicas…

Criado 8 de abril de 2003
Ultima resposta 9 de abr. de 2003
Respostas 6
Participantes 6