2

Javaで Hibernate を使用して、データをデータベースに保存しようとしています。しかし、コードを実行すると、多くの問題が発生しました。誰でもそれについて私を助けることができますか? ありがとう...

私のコード:

package org.ultimania.model;

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

public class Test {

 public static void main(String[] args) {
  Session session = null;
  SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
  session = sessionFactory.openSession();
  Transaction transaction = session.getTransaction();

  BusinessCard card = new BusinessCard();
  card.setId(1);
  card.setName("Özgür");
  card.setDescription("Acıklama");

  try{
  transaction.begin();
  session.save(card);
  transaction.commit();
  } catch(Exception e){
   e.printStackTrace();
  }
  finally{
   session.close();
  }
 }
}

問題 :

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.

Exception in thread "main" java.lang.NoClassDefFoundError:
org/slf4j/impl/StaticLoggerBinder
 at org.slf4j.LoggerFactory.getSingleton(LoggerFactory.java:223)
 at org.slf4j.LoggerFactory.bind(LoggerFactory.java:120)
 at org.slf4j.LoggerFactory.performInitialization(LoggerFactory.java:111)
 at org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.java:269)
 at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:242)
 at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:255)
 at org.hibernate.cfg.Configuration.<clinit>(Configuration.java:152)
 at org.ultimania.model.Test.main(Test.java:14)
Caused by: java.lang.ClassNotFoundException: org.slf4j.impl.StaticLoggerBinder
 at java.net.URLClassLoader$1.run(Unknown Source)
 at java.security.AccessController.doPrivileged(Native Method)
 at java.net.URLClassLoader.findClass(Unknown Source)
 at java.lang.ClassLoader.loadClass(Unknown Source)
 at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
 at java.lang.ClassLoader.loadClass(Unknown Source)
 ... 8 more
4

2 に答える 2

5

Hibernate は、Simple Logging Facade for Java (SLF4J) を使用するようになりました。これは、その名前が示すように、さまざまなロギング フレームワーク実装 (java.util.logging、log4j、logback など) のファサードです。また、どちらを使用するかはユーザーに依存するため、ロギング フレームワークと SLF4J の "バインディング" (SLF4J を実装に "バインド" する jar) 用の jar をクラス パスに配置するのはユーザー次第です。slf4j バインディングが欠落している場合、SLF4J は次の警告メッセージを出力します。

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.

ここで良いことは、エラーが自己説明リンクを提供することです。詳細については、 http://www.slf4j.org/codes.html#StaticLoggerBinder参照してください。記録のために以下に貼り付けます。

クラス org.slf4j.impl.StaticLoggerBinder のロードに失敗しました

このエラーは、 org.slf4j.impl.StaticLoggerBinder クラスをメモリにロードできなかった場合に報告されます。これは、クラスパスに適切な SLF4J バインディングが見つからない場合に発生します。クラスパスに slf4j- nop.jar、 slf4j -simple.jarslf4j-log4j12.jarslf4j-jdk14.jarまたは logback-classic.jarの 1 つ (および 1 つだけ) を配置 すると、問題が解決するはずです。

プロジェクトダウンロード ページから SLF4J バインディングをダウンロードできます。

メッセージは非常に明確です: SLF4J bindingを追加する必要があります。今のところ、私の提案はslf4j-simple.jar (すべてのイベントを に出力するSystem.err) を使用することです。上記のリンクから jar を取得し、アプリケーションのクラス パスに追加します。より高度なロギングを行う場合は、後でこれを変更してください。

于 2010-03-17T03:53:41.680 に答える
4

ライブラリが不足しているので、ここに移動してslf4j jarをダウンロードしてから、jarをクラスプパスに配置します。
私が間違っていない場合は、slf4j-apiがHibernateと一緒に配布されます。これと、slf4j-simpleをアプリケーションのクラスパスに追加するだけです。

于 2010-03-16T23:05:15.007 に答える