2015-07-22 62 views
1

我是新來的冬眠和試試這個簡單的代碼在Eclipse的靛藍和休眠4.3.10。我正在使用jre7。我得到這個錯誤,而運行簡單的Hibernate應用程序「異常在線程」主「java.lang.ExceptionInInitializerError」

我得到這個錯誤日誌中CONSOL

Jul 22, 2015 10:05:22 AM org.hibernate.annotations.common.reflection.java.JavaReflectionManager <clinit> 
INFO: HCANN000001: Hibernate Commons Annotations {4.0.5.Final} 
Jul 22, 2015 10:05:22 AM org.hibernate.Version logVersion 
INFO: HHH000412: Hibernate Core {4.3.10.Final} 
Exception in thread "main" java.lang.ExceptionInInitializerError 
    at org.hibernate.cfg.Configuration.reset(Configuration.java:326) 
    at org.hibernate.cfg.Configuration.<init>(Configuration.java:291) 
    at org.hibernate.cfg.Configuration.<init>(Configuration.java:295) 
    at com.milind.hibernate.HibernateTest.createSessionFactory(HibernateTest.java:16) 
    at com.milind.hibernate.HibernateTest.main(HibernateTest.java:29) 
Caused by: java.lang.NullPointerException 
     at org.hibernate.internal.util.ConfigHelper.getResourceAsStream(ConfigHelper.java:170) 
     at org.hibernate.cfg.Environment.<clinit>(Environment.java:221) 
    ... 5 more 

我嘗試很多解決此錯誤,請幫助我。 我是新手休眠。

HibernateTest.java

import org.hibernate.Session; 
import org.hibernate.SessionFactory; 
import org.hibernate.boot.registry.StandardServiceRegistryBuilder; 
import org.hibernate.cfg.Configuration; 
import org.hibernate.service.ServiceRegistry; 
import com.milind.hibernate.dto.UserDetails; 

public class HibernateTest { 
private static SessionFactory sessionFactory; 
private static ServiceRegistry serviceRegistry; 

public static SessionFactory createSessionFactory() { 
    Configuration configuration = new Configuration(); 
    configuration.configure(); 
    serviceRegistry = new StandardServiceRegistryBuilder().applySettings(
      configuration.getProperties()).build(); 
    sessionFactory = configuration.buildSessionFactory(serviceRegistry); 
    return sessionFactory; 
} 

public static void main(String[] args) { 
    UserDetails user = new UserDetails(); 
    user.setUserId(1); 
    user.setUserName("Milind"); 

    SessionFactory sessionFactory = createSessionFactory(); 
    Session session = sessionFactory.openSession(); 
    session.beginTransaction(); 
    session.save(user); 
    session.getTransaction().commit(); 

} 

} 

UserDetails.java

import javax.persistence.Entity; 
import javax.persistence.Id; 
@Entity 
public class UserDetails { 

@Id 
private int userId; 
private String userName; 

public int getUserId() { 
    return userId; 
} 

public void setUserId(int userId) { 
    this.userId = userId; 
} 

public String getUserName() { 
    return userName; 
} 

public void setUserName(String userName) { 
    this.userName = userName; 
} 

} 

的hibernate.cfg.xml

<?xml version='1.0' encoding='utf-8'?> 
<!DOCTYPE hibernate-configuration PUBLIC 
"-//Hibernate/Hibernate Configuration DTD//EN" 
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> 

<hibernate-configuration> 
<session-factory> 
    <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> 
    <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> 

<property name="hibernate.connection.url">jdbc:mysql://localhost:3535/students</property> 

<property name="hibernate.connection.username">root</property>   
<property name="hibernate.connection.password">admin</property> 

<property name="hibernate.connection.autocommit">true</property>    
<!-- Enable Hibernate's automatic session context management --> 
<property name="current_session_context_class">thread</property> 

<!-- Disable the second-level cache --> 
<property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property> 

<property name="show_sql">true</property>  

<!-- Mapping files --> 
<mapping class="com.milind.hibernate.dto.UserDetails"/> 

+0

看起來你的chibernate.cfg.xml在類路徑中找不到。 – Jens

+0

Actully它在src文件夾中。 –

+0

是你的類路徑中的src文件夾? – Jens

回答

0

問題:休眠配置文件hibernate.cfg.xml在類路徑中不可用。

解決方案:你的hibernate.cfg.xml文件添加到類路徑。

如果您的hibernate配置文件沒有命名爲「hibernate.cfg.xml」,那麼您還需要指定配置文件的名稱。

Configuration cfg=new Configuration(); 
cfg.configure("filePath/your-config-file-name.cfg.xml"); 
+0

如何將這個文件添加到類路徑中? 如果通過放入源文件夾完成,那麼它已經在源文件夾中。 –

+0

確保你的配置文件名必須是'hibernate.cfg.xml'。它要保存在源文件夾中。我應該直接在** src **裏面。 – Seeker

+0

名稱與您的建議相同,並且它直接位於src文件夾內。其實我的一個朋友建議我這個解決方案,所以我嘗試這個解決方案,但仍然出現錯誤。 –

相關問題