Java 休眠新配置()上的NullPointerException;
这是我第一次用Eclipse尝试Hibernate,我做了以下几件事: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() {
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();
}
}
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问题的原因。异常发生在第一行,甚至在加载配置之前。同样,配置不会是问题,因为在中止时配置尚未加载。