Primeiro, em geral, configurar o env var CLASSPATH
geralmente causa mais problemas do que resolve - já que nem todos os aplicativos querem / precisam do mesmo caminho de classe, & amp; muitas vezes quebram quando jatos indesejáveis ou desnecessários são incluídos no caminho de classe. Um aplicativo java deve incluir apenas o número mínimo de frascos que ele exige, nem mais nem menos.
Quando você tem aplicativos específicos e individuais que exigem que o caminho de classe seja definido, geralmente a opção de linha de comando é preferida: java -cp path1:path2:...
. Os ícones da área de trabalho podem ter seu comando alterado para incluir essas opções, ou scripts de shell podem ser modificados para incluir essas opções.
Dito isto (e uma vez que há sempre exceções à regra), então dependendo da versão do java (isto requres java 6 ou posterior), você pode especificar que um diretório inteiro de jars seja adicionado ao classpath adicionando um " *
" no final de um diretório; por exemplo, o seguinte:
/dir1/foo.jar:/dir2/dir3:/dir5/dir6/*:etc...
Significa:
-
/dir1/foo.jar
- (o único frasco) será adicionado ao caminho de classe; -
/dir2/dir3
- todas as classes un-jar'd neste diretório serão adicionadas ao caminho de classe (deve estar na estrutura de pacote adequada; por exemplo,com.my.Foo.class
deve estar em/dir2/dir3/com/my/Foo.class
) -
/dir5/dir6/*
- todos os jars neste diretório (ou seja,/dir5/dir6/*.jar
) serão adicionados ao caminho de classe. Note que este "*
" não é um curinga (você não pode usarf*.jar
ou mesmo*.jar
); é um caractere especial indicando "adicionar todos os frascos"
Em geral, se você tiver que adicionar um diretório inteiro de jars ao classpath do aplicativo, o aplicativo não foi empacotado corretamente. Em vez disso, o aplicativo deve ter um manifesto contendo a lista de frascos de que depende. Ou, no mínimo, apenas um jar deve ser adicionado ao seu classpath, e esse jar pode ter em seu manifesto toda a lista de jars em algum subdiretório.