歲月如哥
          人生非夢
          posts - 50,comments - 144,trackbacks - 0
                  在開發過程中,給 com.thunisoft.fy.business.sp.SelectListUtils 新增加了一個public static方法 getTestSelectList()。在頁面的處理的logic類里面使用的時候代碼提示都可以提示出來,調用方法也沒有報編譯期錯誤。刷新界面后,后臺運行到剛才調用的地方就報如下錯誤:
          2008-04-21 12:30:27,032 [com.thunisoft.summer.web.action.BaseAction]-[ERROR] runtime exception
          java.lang.NoSuchMethodError: com.thunisoft.fy.business.sp.SelectListUtils.getTestSelectList()Lcom
          /thunisoft/fy/support/selectObj/SelectList;
              at com.thunisoft.fy.spxt.pub.ajxq.AjxqLogic.displayZxAjxq_right(AjxqLogic.java:
          736)
              at com.thunisoft.fy.spxt.pub.ajxq.AjxqLogic.displayAjxq_right(AjxqLogic.java:
          116)
              at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
              at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:
          39)
              at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:
          25)
              at java.lang.reflect.Method.invoke(Method.java:
          324)
              at com.thunisoft.summer.web.action.MemoryAction.execute(MemoryAction.java:
          102)
              at org.springframework.web.struts.DelegatingActionProxy.execute(DelegatingActionProxy.java:
          106)
              at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:
          430)
              at com.thunisoft.fy.web.struts.SummerRequestProcessor.process(SummerRequestProcessor.java:
          134)
              at org.apache.struts.action.ActionServlet.process(ActionServlet.java:
          1196)
              at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:
          414)
              at javax.servlet.http.HttpServlet.service(HttpServlet.java:
          689)
              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 com.thunisoft.summer.web.filter.UserAASFilter.doFilter(UserAASFilter.java:
          111)
              at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:
          186)
              at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:
          157)
              at org.ajaxanywhere.AAFilter.doFilter(AAFilter.java:
          46)
              at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:
          186)
              at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:
          157)
              at com.thunisoft.summer.web.filter.CharsetFilter.doFilter(CharsetFilter.java:
          48)
              at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:
          186)
              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:
          534)
               咨詢同事,得到的是“增加靜態方法”要重啟tomcat服務。我重啟了tomcat果然就沒有問題了:)
               有點不太明白,為什么增加靜態方法就要重啟tomcat服務?這樣在開發過程中如果經常增加static方法豈不是每次都要重啟,然后就會很浪費時間了。另外,為什么如果我只是修改了原來已經存在的static方法的實現,則可以正常調試。
          posted on 2008-04-21 12:54 歲月如歌 閱讀(1239) 評論(3)  編輯  收藏 所屬分類: java

          FeedBack:
          # re: 增加靜態方法要重啟tomcat?
          2008-04-22 20:12 | 隔葉黃鶯
          這就是一個容器的熱加載的能力了,不光是增加靜態方法要重啟 Tomcat,其他很多時候都要重啟 Tomcat,如 Sun JVM HotSwap 在以下情況都得重啟應用。

          增刪非靜態方法,增刪構造方法,增刪字段,覆蓋方法,改變方法或字段類型,改變超類,實現別的接口

          Tomcat 大約也就是用的 Sun JVM HotSwap,如果你發現也就只在創建新的類和改變方法體時不用重啟,而大多數我們的調試只是改變方法實現。

          如是你借助其他的 JVM,如 IBM的,或者用 JavaRebel 可以在除改變超類和接口時重啟外,其他時候都不用。

          見:JavaRebel 1.0 正式版發布,為應用服務器偵測類的變化
          http://www.aygfsteel.com/Unmi/archive/2007/12/08/166285.html

          但我覺得用那個意義不大,特別不利于調試。既然改那么多,何礙于重啟一次呢,做好了集群就什么也不用怕的。  回復  更多評論
            
          # re: 增加靜態方法要重啟tomcat?
          2008-04-22 22:17 | 向左走向右走
          @隔葉黃鶯
          謝謝~學習  回復  更多評論
            
          # re: 增加靜態方法要重啟tomcat?
          2008-04-27 12:56 | henry1451
          你可以把tomcat設為自動加載,即熱部署就不用重啟了.  回復  更多評論
            
          主站蜘蛛池模板: 东台市| 改则县| 桦南县| 柳林县| 安溪县| 庄浪县| 嘉善县| 三门县| 阜宁县| 阿坝| 米泉市| 永昌县| 仁寿县| 惠来县| 博兴县| 丹阳市| 巩留县| 凤山县| 丽水市| 富源县| 泌阳县| 镇江市| 田阳县| 和龙市| 大邑县| 平谷区| 泰顺县| 阿勒泰市| 齐河县| 墨脱县| 广东省| 凌云县| 浪卡子县| 台州市| 彭泽县| 阜新市| 外汇| 卓尼县| 开远市| 石城县| 葫芦岛市|