2013-05-07 23 views
0

我已經在Java + MySql + Tomcat5中開發了一個系統。我曾經使用過Java6,但是我用java7更新了我的機器到win8,當我運行我的servlet時,我從Tomcat中得到了這個錯誤。有人知道爲什麼會發生這種情況或如何解決這個問題。tomcat5和java7中的新錯誤U21

javax.servlet.ServletException: java.lang.IllegalArgumentException: HOUR_OF_DAY: 0 -> 1 
    at java.util.GregorianCalendar.computeTime(GregorianCalendar.java:2764) 
    at java.util.Calendar.updateTime(Calendar.java:2606) 
    at java.util.Calendar.getTimeInMillis(Calendar.java:1118) 
    at java.util.Calendar.getTime(Calendar.java:1091) 
    at com.genexus.GXutil.resetTime(Unknown Source) 
    at com.genexus.db.driver.GXConnection.isNullDate(Unknown Source) 
    at com.genexus.db.driver.GXResultSet.getGXDate(Unknown Source) 
    at paddmwl__default.getResults(paddmwl.java:911) 
    at com.genexus.db.DataStoreProvider.readNext(Unknown Source) 
    at com.genexus.db.DataStoreProvider.execute(Unknown Source) 
    at paddmwl.execute_int(paddmwl.java:44) 
    at paddmwl.execute(paddmwl.java:30) 
    at hconsola_impl.e202U2(hconsola_impl.java:3490) 
    at hconsola_impl.evt2U2(hconsola_impl.java:478) 
    at hconsola_impl.dispatchEvents(hconsola_impl.java:180) 
    at hmasterpageww_impl.evtCH2(hmasterpageww_impl.java:215) 
    at hmasterpageww_impl.wsCH2(hmasterpageww_impl.java:146) 
    at hmasterpageww_impl.webExecute(hmasterpageww_impl.java:53) 
    at hconsola_impl.webExecute(hconsola_impl.java:62) 
    at com.genexus.webpanels.GXWebObjectBase.doExecute(Unknown Source) 
    at hconsola.doExecute(hconsola.java:19) 
    at com.genexus.webpanels.GXWebObjectStub.callExecute(Unknown Source) 
    at com.genexus.webpanels.GXWebObjectStub.doPost(Unknown Source) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:709) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) 
    at org.apache.catalina.servlets.InvokerServlet.serveRequest(InvokerServlet.java:419) 
    at org.apache.catalina.servlets.InvokerServlet.doPost(InvokerServlet.java:169) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:709) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214) 
    at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) 
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) 
    at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152) 
    at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) 
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137) 
    at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118) 
    at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102) 
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 
    at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) 
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) 
    at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929) 
    at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160) 
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799) 
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705) 
    at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577) 
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683) 
    at java.lang.Thread.run(Thread.java:722) 

    com.genexus.webpanels.GXWebObjectStub.callExecute(Unknown Source) 
    com.genexus.webpanels.GXWebObjectStub.doPost(Unknown Source) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:709) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802) 
    org.apache.catalina.servlets.InvokerServlet.serveRequest(InvokerServlet.java:419) 
    org.apache.catalina.servlets.InvokerServlet.doPost(InvokerServlet.java:169) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:709) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802) 

我現在知道爲什麼發生這種情況,我沒有得到從谷歌的任何信息。 感謝您的幫助。祝你有美好的一天!! :)

回答

1

在巴西解析日期時,我看到由於DST(夏令時)約束而引發此異常。

似乎在這種情況下,由於DST限制,GregorianCalendar正在拋出IllegalArgumentException。根據GregorianCalendar,當數據庫驅動程序嘗試讀取日期字段時,存儲的日期不是有效日期,因爲時間部分爲零(午夜),並且該特定日期沒有午夜。

我知道這聽起來很奇怪,但問題在於DST的定義方式(至少在Brasil中,我不知道其他國家的情況),當我們輸入DST時,午夜到凌晨1點。這導致沒有午夜的現象,因爲它被替換爲凌晨1點,而這導致我們在這裏看到的問題。在美國,我們沒有這個問題,因爲夏令時在凌晨3點變化,所以午夜總是在那裏。我想知道凌晨3點到凌晨4點是如何處理的,以避免這種怪癖。

我知道處理這個問題的唯一方法是不要用零時間部分存儲日期。