今天在开始复习Hibernate,但是遇到了一个这样的异常

javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file:  java.naming.factory.initial

at javax.naming.spi.NamingManager.getInitialContext(Unknown Source)

at javax.naming.InitialContext.getDefaultInitCtx(Unknown Source)

at javax.naming.InitialContext.getURLOrDefaultInitCtx(Unknown Source)

at javax.naming.InitialContext.getNameParser(Unknown Source)

at org.hibernate.util.NamingHelper.bind(NamingHelper.java:52)

at org.hibernate.impl.SessionFactoryObjectFactory.addInstance(SessionFactoryObjectFactory.java:90)

at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:306)

at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1218)

at cn.edu.hunnu.hibernate.util.HibernateUtils.getSessionFactory(HibernateUtils.java:20)

at cn.edu.hunnu.hibernate.first.Client.main(Client.java:14)

我的配置文件很简单,如下:

<hibernate-configuration>

<session-factory name="luoxiaoyi">

<!-- 配置数据库的有关信息 -->

<property name="hibernate.connection.url">

jdbc:mysql://localhost:3306/hibernateTestDB

</property>

<property name="hibernate.connection.driver_class">

com.mysql.jdbc.Driver

</property>

<property name="hibernate.connection.username">

hibernate

</property>

<property name="hibernate.connection.password">

hibernate

</property>

<!-- 配置方言,也就是Hibernate翻译 -->

<property name="hibernate.dialect">

org.hibernate.dialect.MySQLDialect

</property>

<!-- 配置是否在控制台打印SQL语句 -->

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

<mapping resource="cn/edu/hunnu/hibernate/first/User.hbm.xml" />

</session-factory>

</hibernate-configuration>

考虑到没有用到JNDI,怎么会出现这样的异常呢,最后才发现是我的配置文件中

<session-factory name="luoxiaoyi"> 这一行多出了一个name=“luoxiaoyi”,这样,Hibernate就试图将我这个Session-factory 注册到JNDI中去,于是便出现了这样的错误。删除之后就解决了这个错误。