Tenho um projeto que usa o Vraptor 3 e ele começou a ficar muito grande então resolvemos quebrá-lo em 4 projetos (1 projeto core e 3 auxiliares), até aí tudo bem : )
Após isso, alterei o classpath do core para que usasse o que no eclipse ele chama de Projetos Relacionados e assim conseguiria usar as classes e bibliotecas que estão nos auxiliares. Isso funcionou bem e o compilador não mais reclamou dos imports e coisas do tipo.
O problema é que algumas de minhas classes anotadas com @Component foram para um dos projetos auxiliares e quando tento usá-las levo a exceção: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name xxxxx
que é justamente de uma classe que está em um projeto auxiliar e que está anotada como @component
PS - Todos os projetos tem a mesma estrutura de pacotes que é br.com.blumar.webservice e daí pra frente vai mudando de acordo com o projeto e com as classes envolvidas em cada projeto. O meu web.xml está assim:
você gerou os jars desses projetos? como vc gerou esses jars?
L
lucascperez
Oi Lucas,
Então em geral eu uso o ant para isso e acredito que não terei problemas na hora que usar o ant o meu problema esta no ambiente de desenvolvimento. Uso aqui o eclipse com o plugin run-jetty-run ou o tomcat e nos 2 casos tenho o problema reportado…
Obrigado pela ajuda…
Abs
Lucas_Cavalcanti
bom, se a classe anotada com @Component (do VRaptor) estiver abaixo do pacote br.com.blumar.webservice, se estiver dentro de um jar gerado pelo ant, e esse jar estiver em WEB-INF/lib (não basta só referenciar no eclipse) deveria funcionar sem problemas
L
lucascperez
Oi Lucas,
Obrigado pela resposta… mas meu problema aqui esta antes do build do ant. Estou tendo problemas em usar o @Component usando o plugin do eclipse run-jetty-run ou o plugin do tomcat. Ele não consegue achar a classe que está dentro de outro projeto para injetar as suas dependências. Fiz um teste aqui implementando um ComponentFactory para cada dependência e funcionou mas acho que essa solução não seria muito boa no meu caso.
Tem alguma configuração especial nesses plugins ? ou ainda no web.xml ?
Abs,
Lucas
Lucas_Cavalcanti
dá ClassNotFoundException? ou o erro do spring?
no eclipse vc está referenciando os outros projetos, ou está com os jars dos outros projetos no WEB-INF/lib?
L
lucascperez
Oi Lucas,
Dá erro do spring… estou referenciando os outros projetos pelo eclipse -> build path -> configure build path -> projects
Lucas_Cavalcanti
então, assim não vai funcionar mesmo… teria que estar o jar no WEB-INF/lib
tenta ir em botão direito no projeto >> Properties >> Java EE Module Dependencies e seleciona esses outros projetos. Daí o eclipse exporta os projetos junto com o projeto web, daí talvez funcione.
se vc não faz isso o eclipse só põe no classpath, mas não manda pro servidor
foxpv
Opa,
Acabei de criar um tópico sobre o mesmo assunto, foi mal.
No meu caso, o jar está sendo exportado para a WEB-INF/lib, porém ele mesmo assim tá dando ClassNotFoundException.
Lucas_Cavalcanti
se tá dando ClassNotFound deve ser algum problema na exportação do jar…
como vc está fazendo isso?
foxpv
Nas propriedades do projeto, eu vou em Deployment Assembly e já adiciono o project que eu quero que seja exportado na forma de jar.
Lucas_Cavalcanti
daí vc gera o jar e copia pro WEB-INF/lib do outro projeto?
será que o jar está sendo gerado com as classes? tenta abrir o jar (renomeie pra .zip e abra) e veja se as classes estão lá…
se nessa tela de deployment assembly tiver algo parecido com “Include directory entries”, é pra deixar isso selecionado
foxpv
Lucas,
O eclipse já gera copia para a WEB-INF/lib automaticamente na hora do deploy, eu já tinha aberto o jar, e o .class se encontra lá. Eu até imaginei essa questão do include directories entries porque já tive problemas ao fazer isso manualmente, mas não tem nada do tipo. O estranho é que eu tenho outro projeto que não usa vraptor, e esse tipo de dependência funciona normalmente.
se sim, tenta tirar o pacote, e referenciar o ClienteDAO de alguma outra parte do sistema e ver se funciona normalmente
foxpv
Desculpe a demora, é que viajei pro interior e to sem iinternet, pois bem, descobri uma coisa, parece que o jar que o eclipse tÁ gerando tÁ corrompido pq quando eu do um Java -jar ele da mensagem de corrupted jar. E quando gero o jar manualmente funciona. Não consegui achar de jeito nenhum o que pode estar acontecendo, tentei procurar se tinha algo como add directory entries nesse deployment assembly, mas n tem nada parecido, to sem saber o que fazer. Aposto que é algum manota minha mas…
foxpv
Só pra constar, consegui resolver o problema. Não tinha nada a ver com o vraptor, era um problema no arquivo MANIFEST do core, por isso estava dando corrupt jar quando eu tentava rodar a partir da linha de comando. Agradeço a ajuda!