Galera tenho tres classe: GravaLog.class, ConnectionPool.class e DataSet.class dentro de um diretório d:api_pmbjava. Criei meu jar:
jar cvf pmbjava.jar GravaLog.class ConnectionPool.class DataSet.c
lass
Após criar adicionei o pmbjava.jar no meu classpath e dentro, também, do JAVA_HOMEjrelib, mas quando tento compilar uma arquivo .java que esta dentro de CATALINA_HOMEwebappscontraweb-infclasses ele não consegue encontrar nenhuma das classes. Alguém sabe o que pode estar acontecendo ?? Olha o erro aí abaixo:
UsuarioDAO.java:14: cannot resolve symbol
symbol : class DataSet
location: class classe.bt.contra.UsuarioDAO
private DataSet dataset = null;
A minha classe UsuarioDAO está dentro do diretório ‘classes’ e são geradas dentro do pacote ‘classe.bt.contra’, resultando em classe.bt.contra.UsuarioDAO. Você disse, então que devo conservar as classes DataSet, GravaLog e ConnectionPool dentro desse diretório também e a partir dele gerar meu .jar, é isso? Devo compilar as classes também com pacote ‘classe.bt.contra’? Após criado o .jar e colocá-lo no meu classpath, posso tirar as classes de lá, não é mesmo? Pois a intenção do arquivo .jar, entre outras, é reutilizar classes não é?
Lá explica o seguinte:
:arrow: Se você tem uma classe A na package com.xyz significa que sua estrutura de diretórios (compilado) é assim: c:meuprojetoincomxyzA.class (o source seria c:meuprojetosrccomxyzA.java )
(lembrando que c:meuprojeto é a raiz do projeto).
Pra criar o jar entre em c:meuprojetoin e crie o danado do jar jar cvf pmbjava.jar *.class
Execute o comando jar tf pmbjava.jar no seu arquivo atual e veja que não deve ter o caminho certo da classe (classetcontraUsuarioDAO) e no novo JAR deve ter.
Desculpe a ignorância, mas então vou ter que ter um pmbjava.jar pra cada aplicação? Pelo que entendi, se é que entendi, fico na dependência de diretórios. Não tem como concentrar essas minhas classes que pretendo utilizar em todas as aplicações em um único lugar, criar o .jar e usar em qualquer lugar que eu queira?
gerei o meu .jar dentro do dirtório ‘classes’ e olha como ele ficou:
META-INF/
META-INF/MANIFEST.MF
GravaLog.class
ConnectionPool.class
DataSet.class
Lembrando que as demais classes, como a UsuarioDAO estão em CATALINA_HOME\webapps\contra\web-inf\classes se colocar pacote dentro da classe UsuarioDAO ele não compila, só passa se eu gerar o .class dentro do diretorio classes, é isso mesmo, meu Tomcat irá enxergar as classes? Sendo que ele no arquivo .jar ele não guardou referência a diretorio se eu criar um outra aplicação em
CATALINA_HOME\webapps\avancado\web-inf\classes, ou seja, fora do contexto ‘contra’ as classes devem ser enxergadas também, ok??
Mas uma vez desculpe pela amolação e insistência !!!