NoClassDefFoundError

3 respostas
B

Boa tarde a todos.

Estou desenvolvendo uma aplicação em Tomcat. Estou com um erro “NoClassDefFoundError” que não estou entendendo bem

Tenho um Tomcat instalado no meu computador, com Windows 7. A aplicação roda nele , numa boa, sem erros.

Tenho um outro Tomcat instalado num servidor virtual, com Ubuntu. Nesse é que acontece o erro. Ele indica erro em uma das classes do meu programa, e não de algum jar. Eu já verifiquei, está debaixo do WEB-INF/classes da minha aplicação, da forma correta. Já chequei permissões dos arquivos, está tudo OK.

Alguem sabe o que poderia estar acontecendo?

Diretorio no servidor:

root@localhost:/var/lib/tomcat6/webapps/kbpm/WEB-INF/classes/br/com/kbpm/dao/main# ls
AbstractDAO.class DAOUtil.class QueryBuilder.class
DAOException.class IDAO.class QueryBuilder$QueryOperator.class

Classe:

package br.com.kbpm.dao.main;

import javax.persistence.EntityManager;

import javax.persistence.EntityManagerFactory;

import javax.persistence.Persistence;
public class DAOUtil {

…

}

Stack Trace:

java.lang.NoClassDefFoundError: Could not initialize class br.com.kbpm.dao.main.DAOUtil

br.com.kbpm.model.main.AbstractEntityModel.(AbstractEntityModel.java:26)

br.com.kbpm.model.tt.Ttpar010model.(Ttpar010model.java:14)

sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)

sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)

java.lang.reflect.Constructor.newInstance(Constructor.java:532)

java.lang.Class.newInstance0(Class.java:372)

java.lang.Class.newInstance(Class.java:325)

br.com.kbpm.model.main.ModelUtil.getEntityModel(ModelUtil.java:13)

br.com.kbpm.flex.main.FlexManager.(FlexManager.java:27)

br.com.kbpm.flex.servlet.FlexServletManager.processRequest(FlexServletManager.java:44)

br.com.kbpm.flex.servlet.FlexServlet.doAction(FlexServlet.java:41)

br.com.kbpm.flex.servlet.FlexServlet.doGet(FlexServlet.java:23)

javax.servlet.http.HttpServlet.service(HttpServlet.java:617)

javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

Grato,
Carlos Buosi.

3 Respostas

B

Subindo…

Alys

Olá,

NoClassDefFoundError é uma exceção bem chatinha e nebulosa. Não necessariamente quer dizer que a classe listada não está no pacote que você disponibilizou. Pode ter a ver com alguma classe dependente da classe indicada. Veja só:

java.lang.NoClassDefFoundError: Could not initialize class br.com.kbpm.dao.main.DAOUtil

Ele consegue encontrar sua classe DAOUtil, mas alega que não consegue inicializá-la. Confirme se a mesma não utiliza alguma lib, ou talvez algum arquivo de configuração, que não está disponível no servidor linux.

Por último, só para confirmar: a versão do Tomcat é a mesma nos dois servidores?

B

Olá, Alys.

Valeu a dica. Realmente, havia alguma biblioteca que ele não estava conseguindo ler. Coloquei as libs dentro do war da aplicação e funcionou.

Obrigado pela ajuda.

Att,
Carlos.

Criado 31 de outubro de 2011
Ultima resposta 4 de nov. de 2011
Respostas 3
Participantes 2