今天在开始复习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.(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)

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

jdbc:mysql://localhost:3306/hibernateTestDB

com.mysql.jdbc.Driver

hibernate

hibernate

org.hibernate.dialect.MySQLDialect

true

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

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