Erro estranho quando rodo uma Classe no Tomcat/WEB

4 respostas
RicardoCobain

Aew galera beleza ?

Tou com um probleminha aqui que não consigo entender,pode ser por ignorancia mesmo, pois
estou aprendendo o Java voltado para WEB agora...

Ocorre um erro do tipo:

java.lang.NoClassDefFoundError: org/dom4j/DocumentFactory
at logic.UsuarioLogic.formulario(UsuarioLogic.java:36)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

Quando tento "rodar" as classe UsuarioLogic no tomcat, mais quando rodo ela através da VM normal, usando um metodo main da classe, esse erro não ocorre...

A Classe é a seginte, deu uma simplificada( muito mais que isso) para reproduzir esse erro:
package logic;

import model.Usuario;
import org.dom4j.Document;
import org.dom4j.DocumentFactory;
import org.vraptor.annotations.Component;



@Component
public class UsuarioLogic {

	
	public void adiciona(Usuario usuario) {
		System.out.println(" Usuário adicionado: " + usuario.getNome() + ", " + usuario.getSenha());
	}
	
	public void formulario() {
		Document document = DocumentFactory.getInstance().createDocument();
		System.out.println("Documento: " + document);
	}
	
	public static void main(String[] args) {
		UsuarioLogic app = new UsuarioLogic();
		app.formulario();

	}
}

Estou usando o Vraptor como "controlador" MVC, e para acessar o mesmo método(formulario) atraves do Tomcat uso:
http://localhost:8080/lojavirtual/usuario.formulario.logic , e é onde que ocorre o erro !

Não sei que acontece, o classpah está ( ou pelo menos parece) configurado corretamente !

Alguem pode me ajudar ?

4 Respostas

maquiavelbona

Você pode garantir que o jar do Dom4J está no projeto? Ou melhor, está dentro da pasta WEB-INF/lib?
Esse erro é clássico e fácil de ver.

Ele tá dizendo que não pode achar a classe. De duas, uma: ou o jar que contém essa classe não está no projeto ou o jar que está no projeto não tem essa classe ( problema comum quando usado duas versões diferentes de um mesmo jar, exemplo: uma versão na produção outra no desenvolvimento ).

Até!

RicardoCobain

è… maquiavelbona, foi pro ignorância minha mesmo, tava dando uma olhada na documentação do tomcat e vi que que as Libs/Classes tem que estar nesse diretorios:
/WEB-INF/classes of your web application
/WEB-INF/lib/.jar of your web application
$CATALINA_HOME/lib
$CATALINA_HOME/lib/
.jar

Não tem como eu fugir dessa regra não ?!
pq Costumo usar um diretorio onde guardo as LIBS que mais utilizo, para não precisar ter uma copia de cadas Lib para cada projeto…

maquiavelbona

Er… que eu saiba não. Podes colocar as libs disponíveis em todos os webapps do tomcat na pasta $CATALINA_HOME/common/lib ou na shared/lib, mudar o path assim, não sei.

Até!

RicardoCobain

A pois valeu pela ajuda !
abraço !

Criado 30 de novembro de 2007
Ultima resposta 30 de nov. de 2007
Respostas 4
Participantes 2