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)的外观。并且由于使用一个或另一个取决于用户,因此用户可以将 jar 用于日志框架和 SLF4J“绑定”(将 SLF4J 与实现“绑定”的 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.jarslf4j-simple.jarslf4j-log4j12.jarslf4j-jdk14.jarlogback-classic.jar应该可以解决问题。

您可以从项目下载页面下载 SLF4J 绑定。

信息很清楚:您需要添加一个 SLF4J绑定。目前,我的建议是使用slf4j-simple.jar(将所有事件输出到System.err)。从上面给出的链接中获取 jar 并将其添加到应用程序的类路径中。如果您想进行更高级的日志记录,请稍后更改此设置。

于 2010-03-17T03:53:41.680 回答
4

你有一个缺少的库,去这里下载 slf4j jars,然后把 jars 放到你的 claspspath 中。
如果我没记错的话,slf4j-api 与 hibernate 一起分发,只需将它和 slf4j-simple 添加到应用程序的类路径中。

于 2010-03-16T23:05:15.007 回答