今天在开始复习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中去,于是便出现了这样的错误。删除之后就解决了这个错误。
转载于:https://blog.51cto.com/beyond99/401460