Problemas com Struts 2 e Hibernate

Boa tarde,

Estou começando um projeto que com struts 2 + hibernate + netBeans 7.1.2. Fiz o famoso alô mundo e o struts 2 funcionou beleza, então resolvi criar a primeira classe de modelo e mapear, só que quando eu inicio o tomcat ou implanto o projeto ele não funciona e lança a seguinte exception.


13/09/2012 13:05:36 org.apache.catalina.core.StandardContext filterStart
GRAVE: Exception starting filter TransactionFilter
java.lang.NoSuchMethodError: org.objectweb.asm.ClassWriter.(Z)V
at net.sf.cglib.core.DebuggingClassWriter.(DebuggingClassWriter.java:47)
at net.sf.cglib.core.DefaultGeneratorStrategy.getClassWriter(DefaultGeneratorStrategy.java:30)
at net.sf.cglib.core.DefaultGeneratorStrategy.generate(DefaultGeneratorStrategy.java:24)
at net.sf.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:216)
at net.sf.cglib.core.KeyFactory$Generator.create(KeyFactory.java:145)
at net.sf.cglib.core.KeyFactory.create(KeyFactory.java:117)
at net.sf.cglib.core.KeyFactory.create(KeyFactory.java:108)
at net.sf.cglib.core.KeyFactory.create(KeyFactory.java:104)
at net.sf.cglib.proxy.Enhancer.(Enhancer.java:69)
at org.hibernate.proxy.pojo.cglib.CGLIBLazyInitializer.getProxyFactory(CGLIBLazyInitializer.java:117)
at org.hibernate.proxy.pojo.cglib.CGLIBProxyFactory.postInstantiate(CGLIBProxyFactory.java:43)
at org.hibernate.tuple.entity.PojoEntityTuplizer.buildProxyFactory(PojoEntityTuplizer.java:162)
at org.hibernate.tuple.entity.AbstractEntityTuplizer.(AbstractEntityTuplizer.java:135)
at org.hibernate.tuple.entity.PojoEntityTuplizer.(PojoEntityTuplizer.java:55)
at org.hibernate.tuple.entity.EntityEntityModeToTuplizerMapping.(EntityEntityModeToTuplizerMapping.java:56)
at org.hibernate.tuple.entity.EntityMetamodel.(EntityMetamodel.java:295)
at org.hibernate.persister.entity.AbstractEntityPersister.(AbstractEntityPersister.java:434)
at org.hibernate.persister.entity.SingleTableEntityPersister.(SingleTableEntityPersister.java:109)
at org.hibernate.persister.PersisterFactory.createClassPersister(PersisterFactory.java:55)
at org.hibernate.impl.SessionFactoryImpl.(SessionFactoryImpl.java:226)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1294)
at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:859)
at br.com.onbudget.framework.hibernate.HibernateSessionFactory.initialize(HibernateSessionFactory.java:41)
at br.com.onbudget.framework.hibernate.HibernateSessionFactory.getSessionFactory(HibernateSessionFactory.java:26)
at br.com.onbudget.framework.hibernate.OpenHibernateSessionInViewFilter.getSessionFactory(OpenHibernateSessionInViewFilter.java:89)
at br.com.onbudget.framework.hibernate.OpenHibernateSessionInViewFilter.init(OpenHibernateSessionInViewFilter.java:32)
at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:273)
at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:254)
at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:372)
at org.apache.catalina.core.ApplicationFilterConfig.(ApplicationFilterConfig.java:98)
at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4584)
at org.apache.catalina.core.StandardContext$2.call(StandardContext.java:5262)
at org.apache.catalina.core.StandardContext$2.call(StandardContext.java:5257)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)


----------------------------------------------------------------------------------------------------------------------------------- OpenHibernateSessionInViewFilter ----------------------------------------------------------------------------------------------

public class OpenHibernateSessionInViewFilter implements Filter {

private static final Logger log = Logger.getLogger(OpenHibernateSessionInViewFilter.class.getName());
public static SessionFactory sf;

@Override
public void init(FilterConfig filterConfig) throws ServletException {
    log.finest("Inicializando o filter...");
    log.finest("Obtendo o SessionFactory");
    sf = getSessionFactory();
}

@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
    Session session = sf.getCurrentSession();
    org.hibernate.Transaction t = null;
    try {
        log.finest("Iniciando uma transação com o banco de dados");
        try {
           t  = session.beginTransaction();
        } catch (SessionException Sexc) {
            session = null;
            log.severe("Não abriu uma transação com o banco de dados");
            log.severe(Sexc.getMessage());
            Sexc.printStackTrace();
        }

        // Call the next filter (continue request processing)
        chain.doFilter(request, response);

        // Commit and cleanup
        log.finest("Consolidando a transação com o banco de dados");

        if (session != null && !t.wasCommitted() && !t.wasRolledBack()) {
            t.commit();
        }


    } catch (StaleObjectStateException staleEx) {
        log.severe("Este interceptador não implementa controle otimista de concorrencia!");
        log.severe("Sua aplicação não funcionará enquanto você não implementar a ação compensatória!");
        // Rollback, close everything, possibly compensate for any permanent changes
        // during the conversation, and finally restart business conversation. Maybe
        // give the user of the application a chance to merge some of his work with
        // fresh data... what you do here depends on your applications design.
        throw staleEx;
    } catch (Throwable ex) {
        // Rollback only
        ex.printStackTrace();
        try {
            if (session != null && !t.wasCommitted() && !t.wasRolledBack()) {
                log.finest("Tentando desfazer a transação após a exceção");
                t.rollback();
            }
        } catch (Throwable rbEx) {
            log.severe("Não foi possível desfazer a transação após a exceção!");
        }

        // Let others handle it... maybe another interceptor for exceptions?
        throw new ServletException(ex);
    }

}

public static SessionFactory getSessionFactory() {
    if (sf == null) {
        sf = HibernateSessionFactory.getSessionFactory();
    }
    return sf;
}

@Override
public void destroy() {
}

--------------------------------------------------------------------------------------------- HibernateSessionFactory ---------------------------------------------------------------------------------

public class HibernateSessionFactory {

private static Map<String, SessionFactory> mapaDeSessionFactories = new HashMap();

private HibernateSessionFactory() {
}

public static SessionFactory getSessionFactory() {
    SessionFactory retorno = mapaDeSessionFactories.get("default");
    if (retorno == null) {
        retorno = initialize();
    }
    return retorno;

}

public static SessionFactory getSessionFactory(String cfgName) {
    SessionFactory retorno = mapaDeSessionFactories.get(cfgName);
    if (retorno == null) {
        retorno = initialize(cfgName);
    }
    return retorno;
}

private static SessionFactory initialize() {
    SessionFactory sf = new AnnotationConfiguration().configure().buildSessionFactory();
    mapaDeSessionFactories.put("default", sf);
    return sf;
}

private static SessionFactory initialize(String cfgName) {
    SessionFactory sf = new AnnotationConfiguration().configure(cfgName).buildSessionFactory();
    mapaDeSessionFactories.put(cfgName, sf);
    return sf;
}

Percebi que o erro ocorre durante a inicialização do filtro que nós colocamos aqui, ai buscando por esse erro vi alguns comentários dizendo que poderia ser um problema relacionado a dependências das libs, só que eu não estou conseguindo resolver.

Devido a esse erro não estou nem conseguindo gerar as tabelas automaticamente.

Alguém pode me ajudar?

Use a tag [CODE] quando for postar algum código.

Provavelmente falta algum lib ou jar no seu projeto. com a classe org.objectweb.asm.ClassWriter.

Obrigado por responder ErickRAR.

Na verdade eu tenho essa biblioteca aqui sim, estou achando que pode ser porque estou com mais de uma.

Entre as dependências que eu li que preciso ter para iniciar com o struts 2 estão essas 3 aqui.

asm-3.3.jar
asm-commons-3.3.jar
asm-tree-3.3.jar

essas eu baixei junto com outras que eu preciso para o struts 2

Além disso, eu inseri as biblioteca do hibernate pelo próprio netBeans (ele já vem com algumas bibliotecas caso a pessoa queira utilizar) e entre elas tem essas aqui.

asm-jar
asm-attrs.jar

Eu não sei a versão dessas que já vem com o netbeans, mas será alguma incompatibilidade?

asm-3.3.jar e asm.jar estão em conflito, retire uma das duas.
Seria bom se você soubesse qual a versão aí das libs do netbeans.

faz um teste e remove as duas (ams.jar e asm-attrs.jar)

Além do problema com o Struts, seria bom você corrigir o problema do seu CAPS LOCK.

Por favor, ao postar tópicos, não deixe o título SOMENTE COM LETRAS MAIÚSCULAS.

Bom dia pessoal, peço desculpas pelo caps e por ter demorado a responder novamente.

Consegui fazer funcionar com a ajuda de vocês e pesquisando na net.

Tirei as bibliotecas que vem embutidas no NetBeans e coloquei tudo por fora.
Segue as libs que eu coloquei para ajudar quem venha a ter esse problema.
(além das libs básicas para se trabalhar com hibernate e struts 2, coloquei mais algumas)

antlr-2.7.7
asm-3.3
asm-commons-3.3
asm-tree-3.3
c3p0-0.9.1.2
commons-fileupload-1.2.2
commons-io-2.0.1
commons-lang-2.4
commons-lang3-3.1
dom4j-1.6.1
freemarker-2.3.19
hibernate-commons-annotations-4.0.1.Final
hibernate-core-4.1.6.Final
hibernate-jpa-2.0-api-1.0.1.Final
javassist-3.15.0-GA
jboss-logging-3.1.0.GA
jboss-transaction-api_1.1_spec-1.0.0.Final
ognl-3.0.5
struts2-convention-plugin-2.3.4.1
struts2-core-2.3.4.1

Obrigado pela ajuda.