私はより大きなプロジェクトに取り組んでおり、それにはmaven'dを取得する必要があります。これまでのところ、必要なすべての .jar ファイルを WEB-INF/lib に含めることで、プロジェクトのテストに成功しました。
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 コモンズ コーデック 1.8)
- commons-fileupload1-3.jar (Apache Commons Fileupload 1.3)
- Commons-lang3-3-1 (Apache Commons Lang3 3.1)
- cos.jar (O'Reilly 2005 年 11 月 5 日)
/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は、インポートされた複数の同一ライブラリが原因であることが多いことがわかりました。hibernate-core のインポートと関係があるのでしょうか? そのMavenリポジトリを確認しましたが、どういうわけか二重ライブラリが見つかりません。
ここに私の.classpath:
私は本当に必死で、誰かがアイデアを持っていることを願っています!