O meu problema é o seguinte:
Escrevi uma aplicação empacotei como jar, porém este jar utiliza outros pacotes adicionais como Driver de Conexão com o banco e outro para incluir minha aplicação na bandeja, fiz alguns teste e consegui enpacotar tudo só que copiei todos as classes para dentro do jar mantendo a hierarquia dos pacotes; Mas ficou uma bagunça, gostaria de ter arquivos jar já empacotados e apenas incluí-los dentro do meu jar e pronto, será que isso é possivel?
creio q sim, se no caso de uma aplicação web (um .war q não passa de um jar!) tem jars incluídos em /lib, não vejo pq não der certo um jar dentro de outr
o problema é que no caso do .war o container desempacota e ajusta o classpath automaticamente, no caso de um .jar vc deveria ajustar o classpath no manifest… já tentei várias vezes e nunca deu bem certo!
ant/eclipse não faz isso pra ti?
realmente, nunca usei o ant pra fezer isso pra mim… sempre fiz tudo na linha de comando… :lol:
da próxima vez q eu precisar vou tentar com o ant… se alguém já tiver algum exemplo pronto coloque aí! :roll:
Colocar um .jar dentro de outro não é considerado uma boa prática.
Ao invés disso, escreva isso no seu MANIFEST:
Classpath: /lib/jar1.jar /lib/jar2.jar
E, obviamente, distribua sua aplicação com um diretório lib contendo suas bibliotecas.
puxa, e aí, se tiver o /main.jar /lib/tools.jar se vc por /lib/tools.jar no classpath do manifest a jvm vai enxergar o tools.jar?
vinci,
vc disse que não é um boa prática, mas funciona não é?
se eu fizer Classpath: /jar1.jar /jar2.jar
no meu caso tenho que importar o jar para o banco de dados oracle então para facilitar que importar tudo que é usado com a aplicação
Funciona fácil se você descompactar os .jar
Funciona de um jeito mais difícil se for usar classloaders…
Mas pense bem. Você poderá ter problemas de manutenção do software. O seu .jar vai ficar imenso. Vai ser menos reutilizável. Vai ficar péssimo se for usar WebStart ou Applet.
Obs: eu tive essa mesma dúvida sua há pouco tempo atrás. Usei ant prá descompactar e fundir tudo num só jar. Funcionou. Mas não foi uma boa aquitetura. Toda vez que eu fosse atualizar alguma biblioteca, tinha que criar outro .jar da minha aplicação. Ela usava WebStart. O que significa baixá-la totalmente a cada atualização.
[quote=“tuxhld”]vinci,
vc disse que não é um boa prática, mas funciona não é?
se eu fizer Classpath: /jar1.jar /jar2.jar
no meu caso tenho que importar o jar para o banco de dados oracle então para facilitar que importar tudo que é usado com a aplicação[/quote]
cara creio que pra fazer conxão com o banco seja mais fácil vc colocar o .jar necessário pra fazer a conexao na mesma pasta do seu aplicativo.
se vc n tem algum motivo pra querer colocar tudo junto, eu acho que esta eh a melhor opção, e mais fácil tb.