我有一个用Java + MySql + Tomcat5开发的系统。我曾经使用Java6,但是我用java7将我的机器更新为win8,当我运行我的servlet时,我从Tomcat处得到了这个错误。有没有人知道为什么会发生这样的事情,或者如何修复它。
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)我现在知道为什么会发生这种情况了,但我没有从谷歌那里得到任何信息。谢谢你的帮助。祝你一天愉快!!:)
发布于 2013-11-12 04:19:00
我见过在巴西解析日期时由于DST (夏令时)限制而抛出的异常。
似乎在手头的情况下,由于DST的限制,GregorianCalendar正在抛出一个IllegalArgumentException。根据GregorianCalendar的说法,当DB驱动程序尝试读取日期字段时,存储的日期不是有效的日期,因为时间部分是零(午夜),并且该特定日期没有午夜。
我知道这听起来很奇怪,但问题是DST的定义方式(至少在巴西是这样的,我不知道其他国家是这样的),当我们进入DST时,我们的时钟从午夜改为凌晨1点。这导致了没有午夜的现象,因为它被替换为凌晨1点,这导致了我们在这里看到的问题。在美国我们没有这个问题,因为DST在凌晨3点改变,所以午夜总是在它应该在的地方。我想知道如何处理凌晨3点到4点的时间,以避免这种怪癖。
据我所知,处理这个问题的唯一方法是永远不要将日期存储为零的时间部分。
https://stackoverflow.com/questions/16429249
复制相似问题