Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 休眠新配置()上的NullPointerException;_Java_Eclipse_Hibernate_Nullpointerexception_Hibernate Mapping - Fatal编程技术网

Java 休眠新配置()上的NullPointerException;

Java 休眠新配置()上的NullPointerException;,java,eclipse,hibernate,nullpointerexception,hibernate-mapping,Java,Eclipse,Hibernate,Nullpointerexception,Hibernate Mapping,这是我第一次用Eclipse尝试Hibernate,我做了以下几件事: 创建了一个名为Student.Java的Java Bean,如下所示: package com.jwt.hibernate; public class Student { private long id; private String name; private String degree; private String roll; private String phone; public long getId() {

这是我第一次用Eclipse尝试Hibernate,我做了以下几件事:

  • 创建了一个名为Student.Java的Java Bean,如下所示:

    package com.jwt.hibernate;
    
    public class Student {
    
    private long id;
    private String name;
    private String degree;
    private String roll;
    private String phone;
    
    public long getId() {
        return id;
    }
    public void setId(long id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getDegree() {
        return degree;
    }
    public void setDegree(String degree) {
        this.degree = degree;
    }
    public String getRoll() {
        return roll;
    }
    public void setRoll(String roll) {
        this.roll = roll;
    }
    public String getPhone() {
        return phone;
    }
    public void setPhone(String phone) {
        this.phone = phone;
    }   
    
    }
    
    <?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.url">jdbc:mysql://localhost:3306/hibernatetutorial</property>
    <property name="hibernate.connection.username">root</property>
    <property name="hibernate.connection.password">root</property>
    <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
    <property name="show_sql">true</property>
    <property name="format_sql">true</property>
    <property name="hbm2ddl.auto">create </property>
    
    <mapping resource="com/jwt/hibernate/Student.hbm.xml" />
    
    </session-factory>
    </hibernate-configuration>
    
    package com.jwt.hibernate;
    
     import org.hibernate.Session;
     import org.hibernate.SessionFactory;
     import org.hibernate.Transaction;
     import org.hibernate.cfg.Configuration;
    
     public class SimpleTest {
    
    public static void main(String[] args) {
        Configuration cfg = new Configuration();
        cfg.configure("hibernate.cfg.xml");
    
        SessionFactory factory = cfg.buildSessionFactory();
        Session session = factory.openSession();
    
        Student student = new Student();
        student.setName("Mukesh");
        student.setRoll("101");
        student.setPhone("8888");
        student.setDegree("B.E");
    
        Transaction tx = session.beginTransaction();
        session.save(student);
        System.out.println("Object saved successfully.....!!");
        tx.commit();
    
        session.close();
        factory.close();
    }
    
    }
    
  • 创建了一个映射文件,Student.hbm.xml,如下所示:

  • package com.jwt.hibernate;
    
    public class Student {
    
    private long id;
    private String name;
    private String degree;
    private String roll;
    private String phone;
    
    public long getId() {
        return id;
    }
    public void setId(long id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getDegree() {
        return degree;
    }
    public void setDegree(String degree) {
        this.degree = degree;
    }
    public String getRoll() {
        return roll;
    }
    public void setRoll(String roll) {
        this.roll = roll;
    }
    public String getPhone() {
        return phone;
    }
    public void setPhone(String phone) {
        this.phone = phone;
    }   
    
    }
    
    <?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.url">jdbc:mysql://localhost:3306/hibernatetutorial</property>
    <property name="hibernate.connection.username">root</property>
    <property name="hibernate.connection.password">root</property>
    <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
    <property name="show_sql">true</property>
    <property name="format_sql">true</property>
    <property name="hbm2ddl.auto">create </property>
    
    <mapping resource="com/jwt/hibernate/Student.hbm.xml" />
    
    </session-factory>
    </hibernate-configuration>
    
    package com.jwt.hibernate;
    
     import org.hibernate.Session;
     import org.hibernate.SessionFactory;
     import org.hibernate.Transaction;
     import org.hibernate.cfg.Configuration;
    
     public class SimpleTest {
    
    public static void main(String[] args) {
        Configuration cfg = new Configuration();
        cfg.configure("hibernate.cfg.xml");
    
        SessionFactory factory = cfg.buildSessionFactory();
        Session session = factory.openSession();
    
        Student student = new Student();
        student.setName("Mukesh");
        student.setRoll("101");
        student.setPhone("8888");
        student.setDegree("B.E");
    
        Transaction tx = session.beginTransaction();
        session.save(student);
        System.out.println("Object saved successfully.....!!");
        tx.commit();
    
        session.close();
        factory.close();
    }
    
    }
    

    现在,当我尝试运行SimpleTest时,出现以下错误:

    **INFO: HHH000412: Hibernate Core {4.3.7.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.jwt.hibernate.SimpleTest.main(SimpleTest.java:11)
    Caused by: java.lang.NullPointerException
        at org.hibernate.internal.util.ConfigHelper.getResourceAsStream(ConfigHelper.java:170)
        at org.hibernate.cfg.Environment.<clinit>(Environment.java:221)
        ... 4 more**
    
    **信息:hh000412:Hibernate核心{4.3.7.Final}
    线程“main”java.lang.ExceptionInInitializeError中出现异常
    位于org.hibernate.cfg.Configuration.reset(Configuration.java:326)
    在org.hibernate.cfg.Configuration.(Configuration.java:291)
    位于org.hibernate.cfg.Configuration(Configuration.java:295)
    位于com.jwt.hibernate.SimpleTest.main(SimpleTest.java:11)
    原因:java.lang.NullPointerException
    位于org.hibernate.internal.util.ConfigHelper.getResourceAsStream(ConfigHelper.java:170)
    在org.hibernate.cfg.Environment上(Environment.java:221)
    ... 4更多**
    
    我仔细检查并确保所有配置和jar文件都添加到了类路径中。所以这不是问题所在。我真的很想知道是什么导致了这个问题,以及如何解决它


    提前谢谢

    我建议更新到更高版本的SLF4J。

    您的
    Hibernate.cfg.xml
    不在类路径上。它在哪个文件夹里

    编辑:

    Caused by: java.lang.NullPointerException
    at org.hibernate.internal.util.ConfigHelper.getResourceAsStream(ConfigHelper.java:170)
    

    这是代码中的实际异常,如果加载了
    Hibernate.cfg.xml
    ,请检查
    SELF4J
    版本,不要使用
    user library
    获取jar文件,将所有库放在lib文件夹中,然后在类路径中配置这些库。

    您可能会发现Hibernate的Java配置更友好。下面是我做的一个例子(注意:这个类中有像@Autowired和@PostConstruct这样的Spring注释,所以不要混淆):


    然后我将我的值放入一个属性文件:-)

    这里没有什么您可能会做错的,因为它在第一行代码中失败了。我所能想到的只是Hibernate库/依赖项版本之间的冲突。您如何构建/在类路径上包括什么?如果您使用maven或类似工具,可能会发布您的
    pom.xml
    。我在构建路径中包含MySQL驱动程序和用于hibernate的jar。此外,我使用的是hibernate-release-4.3.7.final虽然这在当今比XML配置“更好”,但它不能成为OP问题的原因。异常发生在第一行,甚至在加载配置之前。同样,配置不会是问题,因为在中止时配置尚未加载。