由于org.Hibernate.internal.util.ConfigHelper.getResourceAsStream上的java.lang.NullPointerException,Hibernate 4.3.5会话工厂创建失败

由于org.Hibernate.internal.util.ConfigHelper.getResourceAsStream上的java.lang.NullPointerException,Hibernate 4.3.5会话工厂创建失败,hibernate,Hibernate,我试图创建一个基本的HibernateJava应用程序来简单地显示现有的表数据。我被困在创建SessionFactory对象的第一步。下面是错误 这个问题与这里提到的类似。 我的Exclipse项目结构如下 Hibernatetest (Project folder) src com.test -Package City.java -POJO HelloHibernate.ja

我试图创建一个基本的HibernateJava应用程序来简单地显示现有的表数据。我被困在创建SessionFactory对象的第一步。下面是错误

这个问题与这里提到的类似。

我的Exclipse项目结构如下

Hibernatetest  (Project folder)
   src
       com.test                -Package
           City.java            -POJO
           HelloHibernate.java  -DAO
           HibernateUtil.java   -Helper Class
           City.hbm.xml         -Mapping 
       hibernate.cfg.xml       -config
配置文件位于包的外部

下面是我的hibernate.cfg.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="hibernate.connection.password">root</property>
        <property name="hibernate.connection.url">jdbc:mysql://192.168.0.2:3306/world</property>
        <property name="hibernate.connection.username">root</property>
        <property name="hibernate.default_schema">world</property>
        <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
      <mapping resource="com/test/City.hbm.xml"/>
    </session-factory>
</hibernate-configuration>
下面是我使用Hibernate 4.3.5文档创建的HibernateUtil.java

package com.test;

import org.hibernate.SessionFactory;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;

public class HibernateUtil {
     private static  SessionFactory sessionFactory = buildSessionFactory();
        private static SessionFactory buildSessionFactory() {
            try {             
          return new Configuration().configure().buildSessionFactory(
                    new StandardServiceRegistryBuilder().build() );             
            }
            catch (Throwable ex) {            
                System.err.println("Initial SessionFactory creation failed." + ex);
                System.err.println(ex.getCause());
                throw new ExceptionInInitializerError(ex);
            }   
        }

        public static SessionFactory getSessionFactory() {
            return sessionFactory;
        }     
}   
下面是我的主要应用类

package com.test;
import java.util.List;
import com.test.City;
import org.hibernate.Session;
import com.test.HibernateUtil;
public class HelloHibernate {

    public static void main(String[] args) {

        HelloHibernate dao = new HelloHibernate();
        List<City> cities = dao.getCities();
        for( City city : cities){
            System.out.println(city.getName());
        }
    }   
          public List<City> getCities(){
                Session session = HibernateUtil.getSessionFactory().getCurrentSession();
                session.beginTransaction();
                @SuppressWarnings("unchecked")
                List<City> cities = session.createQuery("from city").list();
                session.getTransaction().commit();
                session.close();
                return cities;          
            }
    }
package.com.test;
导入java.util.List;
导入com.test.City;
导入org.hibernate.Session;
导入com.test.HibernateUtil;
公共级HelloHibernate{
公共静态void main(字符串[]args){
HelloHibernate dao=新的HelloHibernate();
List cities=dao.getCities();
用于(城市:城市){
System.out.println(city.getName());
}
}   
公共列表(城市){
会话会话=HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
@抑制警告(“未选中”)
List cities=session.createQuery(“来自城市”).List();
session.getTransaction().commit();
session.close();
回归城市;
}
}

我只是尝试将此java文件作为java应用程序运行。

有时会出现此异常

Caused by: java.lang.NullPointerException

  at org.hibernate.internal.util.ConfigHelper.getResourceAsStream

  (ConfigHelper.java:170)

        at org.hibernate.cfg.Environment.<clinit>(Environment.java:221)

哇,真糟糕,谢谢。我也遇到了同样的问题,并按照您的指示解决了。然而,仍然存在的问题是,为什么在类路径中添加用户库时会生成异常?
package com.test;
// Generated May 18, 2014 5:26:21 PM by Hibernate Tools 4.0.0
/**
 * City generated by hbm2java
 */
public class City implements java.io.Serializable {

    private static final long serialVersionUID = 6056273769318803807L;
    private int id;
    private String name;
    private String countryCode;
    private String district;
    private int population;

    public City() {
    }

    public City(String name, String countryCode, String district, int population) {
        this.name = name;
        this.countryCode = countryCode;
        this.district = district;
        this.population = population;
    }

    public int getId() {
        return this.id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return this.name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getCountryCode() {
        return this.countryCode;
    }

    public void setCountryCode(String countryCode) {
        this.countryCode = countryCode;
    }

    public String getDistrict() {
        return this.district;
    }

    public void setDistrict(String district) {
        this.district = district;
    }

    public int getPopulation() {
        return this.population;
    }

    public void setPopulation(int population) {
        this.population = population;
    }

}
package com.test;

import org.hibernate.SessionFactory;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;

public class HibernateUtil {
     private static  SessionFactory sessionFactory = buildSessionFactory();
        private static SessionFactory buildSessionFactory() {
            try {             
          return new Configuration().configure().buildSessionFactory(
                    new StandardServiceRegistryBuilder().build() );             
            }
            catch (Throwable ex) {            
                System.err.println("Initial SessionFactory creation failed." + ex);
                System.err.println(ex.getCause());
                throw new ExceptionInInitializerError(ex);
            }   
        }

        public static SessionFactory getSessionFactory() {
            return sessionFactory;
        }     
}   
package com.test;
import java.util.List;
import com.test.City;
import org.hibernate.Session;
import com.test.HibernateUtil;
public class HelloHibernate {

    public static void main(String[] args) {

        HelloHibernate dao = new HelloHibernate();
        List<City> cities = dao.getCities();
        for( City city : cities){
            System.out.println(city.getName());
        }
    }   
          public List<City> getCities(){
                Session session = HibernateUtil.getSessionFactory().getCurrentSession();
                session.beginTransaction();
                @SuppressWarnings("unchecked")
                List<City> cities = session.createQuery("from city").list();
                session.getTransaction().commit();
                session.close();
                return cities;          
            }
    }
Caused by: java.lang.NullPointerException

  at org.hibernate.internal.util.ConfigHelper.getResourceAsStream

  (ConfigHelper.java:170)

        at org.hibernate.cfg.Environment.<clinit>(Environment.java:221)
right click on project -> Build path -> configure build path->
add external jars->browse to the jars location and select all required jars.
Uncheck the System Library as shown below and rebuild the source.