[RESOLVIDO] Maven - Dependencias

Olá Pessoa, bom dia!

Estou começando a utilizar o maven.
Consegui resolver todas as dependências com ele, consigo desenvolver normalmente o projeto. Mas, quando vou adiciono ele ao tomcat pelo eclipse e inicio o servidor, é lançada a seguinte exception

No meu pom.xml tenho o seguinte

</dependencies>
	/* outras dependencias */
	<dependency>
		<groupId>br.com.caelum</groupId>
		<artifactId>vraptor</artifactId>
		<version>3.4.0</version>
	</dependency>
</dependencies>
<build>
	<outputDirectory>${basedir}/WebContent/WEB-INF/classes/</outputDirectory>
</build>

Estou deixando de fazer alguma configuração?

Desde já agradeço!
Abraços

Você está conseguindo importar a classe VRaptor dentro das suas classes?

Sim Rodrigo, estou. Tudo normal.

Vc já tentou abrir teu WAR e ver se a biblioteca se encontra na pasta “WEB-INF/lib”?
Se o JAR esta presente, verifique se dentro do JAR existe a estrutura de diretorios “br.com.caelum.vraptor”.
Por fim, veja se dentro desta estrutura o arquivo “VRaptor.class” se faz presente…

é meio chatinho de integrar o eclipse com o maven, qual a ide?

aqui eu n fiz a configuração de build e funciona normal

abrasss

Complementando o post do BrunoFurtado:

Se o JAR não estiver presente, provavlmente é um dos (muitos) bugs do plugin do maven para o eclipse. Gere o war usando linha de comando mesmo. E pra não ter q fazer isso toda vez que compilar, com o botão direito, clique no seu projeto e acesse Properties -> Deployment Assembly. Vá na aba de mesmo nome e verifique se as dependências importadas com o maven (ou mesmo uma variável ‘maven dependencies’) estão configuradas. Se não tiver, dá um ‘add’ e as adicione.

1 curtida

Rodrigo,

Acredito que n seja um bug…
E o esquema q vc falou ai meio que faz com que o Maven não exerça sua principal função.

O Maven geralmente não compila os arquivos .JAVA quando estão fora da estrutura “src/main/java”.
Provavelmente, neste caso, o JAR da Caelum não tem essa estrutura padrão Maven e ai ao compilar o Maven não encontra e não gera o .CLASS.

Não me lembro ao certo, mas tem uma tag “source” que indica ao Maven qual a estrutura de diretório, quando esta nao segue o padrão.
E ai ele compila certo.

Mas concordo com o Rodrigo…
Se a tua empresa não faz o deploy utilizando o Maven, mete ele a força no Eclipse e segue o baile.

As vezes o Maven atrapalha…

Rodrigo, funcionou da forma que disse! Configurei para as dependencias irem para a pasta lib.

Mas, agora tenho outra exception

java.lang.NoSuchMethodError: org.slf4j.spi.LocationAwareLogger.log(Lorg/slf4j/Marker;Ljava/lang/String;ILjava/lang/String;Ljava/lang/Throwable;)V
	at org.apache.commons.logging.impl.SLF4JLocationAwareLog.info(SLF4JLocationAwareLog.java:159)

Os dois jars estão presentes, e com todos .class
slf4j-log4j12-1.6.1.jar
slf4j-api-1.6.1.jar

O que pode ser agora?

Obrigado pela ajuda galera!

Essa tarefa é realizada pelo plugin do eclipse. Não tem nada a ver com o maven.

As classes que ele não compila são as do projeto, não das suas dependências. No caso, ele está tentando importar uma biblioteca, que já foi compilada um dia.

Não não Bruno. Pouco importa se a biblioteca segue ou não a estrutura padrão do maven. É só criar a biblioteca e colocar no repositório do maven. A não ser nos casos em que essa biblioteca tenha dependências. Mas no caso do VRaptor, ele é a biblioteca que possui dependências. Então o bglbruno não deveria ter tomado ClassCastException. Acho que o erro é simplesmente esse que você citou mesmo (a biblioteca não foi “deployada” pelo eclipse).

Ah, sei lá, eu gosto! :mrgreen: Mas tem algums problemas sim.

[quote=bglbruno]Rodrigo, funcionou da forma que disse! Configurei para as dependencias irem para a pasta lib.

Mas, agora tenho outra exception

java.lang.NoSuchMethodError: org.slf4j.spi.LocationAwareLogger.log(Lorg/slf4j/Marker;Ljava/lang/String;ILjava/lang/String;Ljava/lang/Throwable;)V
	at org.apache.commons.logging.impl.SLF4JLocationAwareLog.info(SLF4JLocationAwareLog.java:159)

Os dois jars estão presentes, e com todos .class
slf4j-log4j12-1.6.1.jar
slf4j-api-1.6.1.jar

O que pode ser agora?

Obrigado pela ajuda galera![/quote]

É a versão do slf4j que o commons-logging está usando.
A versão do commons que você colocou no projeto utiliza uma versão do slf4j diferente da que você colocou no seu projeto. O commons tentou usar um método de uma classe do slf4j que não existe na tal classe. Daí a exceção.
Verifique no site do projeto qual versão você deve usar.

Rodrigo, era a versão do log4j mesmo, mas era uma versão que o Tiles pede.
Uso o Tiles no meu projeto também, e ele usa uma versão antiga. O que eu fiz pra resolver, foi só ignorar essa dependência dele, e tudo funcionou normal.

Obrigado galera!
Abraço!

[quote=Rodrigo Vieira Pinto]Complementando o post do BrunoFurtado:

Se o JAR não estiver presente, provavlmente é um dos (muitos) bugs do plugin do maven para o eclipse. Gere o war usando linha de comando mesmo. E pra não ter q fazer isso toda vez que compilar, com o botão direito, clique no seu projeto e acesse Properties -> Deployment Assembly. Vá na aba de mesmo nome e verifique se as dependências importadas com o maven (ou mesmo uma variável ‘maven dependencies’) estão configuradas. Se não tiver, dá um ‘add’ e as adicione.[/quote]

Rodrigo,

Obrigado pela dica.

Wagner F Silva

.’.