2013-01-25 86 views
0

我有我所有的Microsoft SQL數據庫連接運行良好,hql編輯器已經證明,通過返回結果,但是當我去運行應用程序時,我得到這個錯誤,指向一個NullPointerException異常:Java Struts - 休眠 - 錯誤創建SessionFactory

SEVERE: Initial SessionFactory creation failed.java.lang.NullPointerException 
WARNING: StandardWrapperValve[action]: PWC1406: Servlet.service() for servlet action threw 
exception 
java.lang.ExceptionInInitializerError 
at hibernate.HibernateUtil.<clinit>(HibernateUtil.java:34) 
at hibernate.TimeSheetHelper.<init>(TimeSheetHelper.java:25) 
at com.myapp.struts.LoginAction.populateTimeSheet(LoginAction.java:120) 
at com.myapp.struts.LoginAction.execute(LoginAction.java:67) 
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:425) 
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:228) 
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913) 
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:462) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:688) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:770) 
at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1550) 
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:281) 
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) 
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655) 
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595) 
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:161) 
at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:331) 
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231) 
at com.sun.enterprise.v3.services.impl.ContainerMapper$AdapterCallable.call 
(ContainerMapper.java:317) 
at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:195) 
at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:860) 
at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:757) 
at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1056) 
at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:229) 
at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137) 
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104) 
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90) 
at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79) 
at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54) 
at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59) 
at com.sun.grizzly.ContextTask.run(ContextTask.java:71) 
at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532) 
at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513) 
at java.lang.Thread.run(Thread.java:722) 
Caused by: java.lang.NullPointerException 
at org.hibernate.cfg.Configuration.configure(Configuration.java:1441) 
at hibernate.HibernateUtil.<clinit>(HibernateUtil.java:29) 
... 33 more 

這是我的HibernateUtil文件:

private static final SessionFactory sessionFactory; 

static { 
try { 
// Create the SessionFactory from standard (hibernate.cfg.xml) 
// config file. 
URL myUrl = Thread.currentThread().getContextClassLoader().getResource 
("C:\\java\\hibernate\\hibernate.cfg.xml"); 
Configuration c = new Configuration(); 
c.configure(myUrl); 
sessionFactory = c.buildSessionFactory(); 
} catch (Throwable ex) { 
// Log the exception. 
System.err.println("Initial SessionFactory creation failed." + ex); 
throw new ExceptionInInitializerError(ex); 
} 
} 

public static SessionFactory getSessionFactory() { 
return sessionFactory; 
} 
} 

回答

0

我已經創建了Session對象並將其指定爲null。

刪除Null使其工作。

0

ClassLoader.getResource()並不需要作爲參數文件路徑。它採用從類路徑加載的資源的路徑。因此,您的文件必須位於應用程序的類路徑中的一個罐子(或目錄)中,並且如果它位於程序包foo.bar中,則路徑應爲foo/bar/hibernate.cfg.xml