2009-07-03 16 views
1

私はHibernateを使い始めようとしています。私のプログラムを実行すると、初期化中にエラーが発生します。 は例外は、このクラスによってスローhereからコピーされます。ここではHibernateの設定

package net.always_data.bastien_leonard; 

import org.hibernate.SessionFactory; 
import org.hibernate.cfg.Configuration; 

public class HibernateUtil { 

    private static final SessionFactory sessionFactory = buildSessionFactory(); 

    private static SessionFactory buildSessionFactory() { 
     try { 
      // Create the SessionFactory from hibernate.cfg.xml 
      return new Configuration().configure().buildSessionFactory(); 
     } 
     catch (Throwable ex) { 
      // Make sure you log the exception, as it might be swallowed 
      System.err.println("Initial SessionFactory creation failed." + ex); 
      throw new ExceptionInInitializerError(ex); 
     } 
    } 

    public static SessionFactory getSessionFactory() { 
     return sessionFactory; 
    } 

} 

は、スタックトレースです:

> java net/always_data/bastien_leonard/Main 
Initial SessionFactory creation failed.java.lang.NoClassDefFoundError: org/hibernate/cfg/Configuration 
Exception in thread "main" java.lang.ExceptionInInitializerError 
    at net.always_data.bastien_leonard.HibernateUtil.buildSessionFactory(HibernateUtil.java:18) 
    at net.always_data.bastien_leonard.HibernateUtil.<clinit>(HibernateUtil.java:8) 
    at net.always_data.bastien_leonard.Main.main(Main.java:17) 
Caused by: java.lang.NoClassDefFoundError: org/hibernate/cfg/Configuration 
    at net.always_data.bastien_leonard.HibernateUtil.buildSessionFactory(HibernateUtil.java:13) 
    ... 2 more 
Caused by: java.lang.ClassNotFoundException: org.hibernate.cfg.Configuration 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:217) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:205) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:323) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:268) 
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:336) 
    ... 3 more 

問題がどこから来るか私は知らないので、私は本当に知りません見る場所:

  • インストールの問題?これはMavenによって処理されたので、正しいと思います。
  • Hibernateは設定ファイルを見つけることができませんか?
  • classpathの問題?

私はhibernate.cfg.xmlファイルを含むクラスパスのルートからプログラムを呼び出しています。ここ は、それが実際にどのように見えるかです:

> pwd 
/home/bastien/info/java/hibernate/test/Test/target/classes 
> echo $CLASSPATH 
/home/bastien/info/java/hibernate/test/Test/target/classes 
> ls -F 
hibernate.cfg.xml net/ 
> ls -FR 
.: 
hibernate.cfg.xml net/ 

./net: 
always_data/ 

./net/always_data: 
bastien_leonard/ 

./net/always_data/bastien_leonard: 
Event.class Event.hbm.xml HibernateUtil.class Main.class 

私は休止状態で提供チュートリアルの例に見てみましたが、Mavenのは、それらをコンパイルすることはできません。それは不完全な人工物について不平を言う。

ところで、Mavenは私にHibernate 3.3.1を使用させます。 3.3.2を使用してMavenにインストールを処理させることは可能ですか?

答えて

1

"java.lang.NoClassDefFoundError"は、クラスローダーがorg.hibernate.cfgを見つけることができないことを示します.Configurationは、CLASSPATHの問題があると言います。

エコー$ CLASSPATH /ホーム/バスティアン/情報/ javaの/休止状態/テスト/テスト/ターゲット/クラス

すべてのHibernate JARと依存関係を追加するんです同様にCLASSPATHに追加します。私はこのエコーでは見えません。

+0

私は、Mavenが自動的にそれを処理すると思っていました。これを自動化する簡単な方法はありますか? –

+1

CLASSPATHに依存関係があることをMavenに伝えてください:http://maven.apache.org/shared/maven-archiver/examples/classpath.html – duffymo

+0

ありがとう。私はすべての依存jarファイルを私のjarファイルと同じディレクトリに入れようとしていますが、Mavenによってダウンロードされたすべてのslf4j jarをカレントディレクトリに入れていますが、org/slf4j/impl/StaticLoggerBinderのNoClassDefFoundErrorを常に持っています。何か案が? –

関連する問題