【问题标题】:Tomcat 7, Hibernate 3.6, PostgreSQL 9.2 | Maven java.lang.NoClassDefFoundErrorTomcat 7、休眠 3.6、PostgreSQL 9.2 | Maven java.lang.NoClassDefFoundError
【发布时间】:2013-07-22 21:35:35
【问题描述】:

我正在做一个更大的项目,需要 maven'd。到目前为止,我已经通过在 WEB-INF/lib 中包含所有必需的 .jar 文件成功地测试了该项目。

maven 之前的库:

  • hibernate3.jar (Hibernate 3.6.Final)
  • log4j.jar (1.2.8)
  • postgresql-9.2-1002.jdbc4.jar (PostgreSQL 9.2 JDBC4)
  • commons-codec1.8.jar (Apache Commons Codec 1.8)
  • commons-fileupload1-3.jar (Apache Commons Fileupload 1.3)
  • Commons-lang3-3-1 (Apache Commons Lang3 3.1)
  • cos.jar (O'Reilly 05Nov2005)

在 /Configure/Convert To Maven 之后,我添加了所有依赖项:

<dependencies>      
        <!-- hibernate framework -->
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-entitymanager</artifactId>
            <version>3.6.10.Final</version>
        </dependency>
               
        <!-- logging -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.7.5</version>
        </dependency>
            
        <!-- PostgreSQL-JDBC -->
        <dependency>
            <groupId>org.postgresql</groupId>
            <artifactId>postgresql</artifactId>
            <version>9.2-1002-jdbc4</version>
        </dependency>
        <!-- upload - O'reilly COS -->
        <dependency>
            <groupId>servlets.com</groupId>
            <artifactId>cos</artifactId>
            <version>05Nov2002</version>
        </dependency>
         <!-- Apache Commons -->   
        <dependency>
            <groupId>commons-codec</groupId>
            <artifactId>commons-codec</artifactId>
            <version>1.8</version>
        </dependency>  
        <dependency>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
            <version>1.3</version>
        </dependency>
    </dependencies>

到项目,但不知何故总是得到一个 java.lang.NoClassDefFoundError

java.lang.NoClassDefFoundError: Could not initialize class business.HibernateUtil
    business.HibernateEngine.searchBatch(HibernateEngine.java:168)
    business.HibernateEngine.searchBatch(HibernateEngine.java:163)
    business.PersonAdmin.searchUser(PersonAdmin.java:222)
    ui.login2.doGet(login2.java:161)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:621)

包业务中的两个类(HibernateUtil 和 HibernateEngine)设置程序中使用的会话。这里它在 HibernateEngine 中崩溃(第 167-169 行):

protected List searchBatch(String hqlQuery, boolean close) {
        Session session = HibernateUtil.currentSession();
        Transaction tx = session.beginTransaction();

我尝试了所有库的不同版本,但仍然没有任何进展。我发现 java.lang.NoClassDefFoundError 通常是由多个导入的相同库引起的。难道它与休眠核心导入有关吗?我检查了它的 maven 存储库,但不知何故我没有找到任何双库。

这是我的 .classpath:

我真的很绝望,希望有人能有一个想法!

【问题讨论】:

    标签: hibernate postgresql maven tomcat pom.xml


    【解决方案1】:

    看看这个帖子:Hibernate java.lang.NoClassDefFoundError: org/hibernate/util/DTDEntityResolver

    他们删除了“hibernate-tools”并添加了“hibernate-core”。

    【讨论】:

    • 感谢您的快速回复,我添加了 hibernate-core 但仍然收到 java.lang.NoClassDefFoundError: Could not initialize class business.HibernateUtil。据我所知,hibernate-entitymanager 通常包含 hibernate-core。
    • 您是否在 Eclipse 上通过 tomcat 运行您的项目?
    • 不,我已经单独安装了tomcat。我认为这可能是由休眠引起的配置问题。我会检查它的设置。
    猜你喜欢
    • 1970-01-01
    • 2018-04-10
    • 1970-01-01
    • 2013-06-30
    • 1970-01-01
    • 1970-01-01
    • 2015-02-24
    • 1970-01-01
    • 2013-04-27
    相关资源
    最近更新 更多