首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

关于java定时器的有关问题

2013-07-16 
关于java定时器的问题本帖最后由 zjsxcf 于 2011-03-28 19:50:35 编辑我需要做一个定时登陆网页获取数据的

关于java定时器的问题
本帖最后由 zjsxcf 于 2011-03-28 19:50:35 编辑 我需要做一个定时登陆网页获取数据的功能。
其中登陆网站获取数据功能目前已完成(使用httpclient),测试正常。
但是我用定时器调用就出现报错,报错如下:
<main> org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3768) 
<ERROR> Exception sending context initialized event to listener instance of class com.zbht.servlet.SystemStartup

java.lang.NoClassDefFoundError: org/apache/commons/httpclient/HttpMethod
at com.zbht.servlet.SystemStartup.contextInitialized(SystemStartup.java:75)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3764)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4216)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1014)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:736)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1014)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
at org.apache.catalina.core.StandardService.start(StandardService.java:448)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:700)
at org.apache.catalina.startup.Catalina.start(Catalina.java:552)
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:597)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:295)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:433)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.httpclient.HttpMethod
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1362)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1208)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:316)
... 16 more

private Timer normTimer;

public void contextInitialized(ServletContextEvent arg0) {


normTimer = new Timer("lize", true);
        
normTimer.schedule(new FormLogin(),0,60*5*1000);
}

public void contextDestroyed(ServletContextEvent arg0) {

normTimer.cancel();
}

经过断点调试,发现错误在normTimer.schedule(new FormLogin(),0,60*5*1000);

public class FormLogin extends TimerTask{
    
 private static boolean isRunning = false;


 private static Log logger = LogFactory.getLog(FormLogin.class);
    public void run() {
        if (!isRunning) {
            isRunning = true;
            System.out.println("开始执行指定任务");
            try{
            //lizeTimer(); //此方法为登陆网站获取数据功能,我把该方法注释了还是报这样的错误。
            }catch(Exception e){
            logger.error("异常信息:" + e.getMessage());
            }
            isRunning = false;
            System.out.println("指定任务执行结束");
        } else {
            System.out.println("上一次任务执行还未结束");
                 }
     }
        }

不知错在何处,请帮忙看一下.
[解决办法]
java.lang.NoClassDefFoundError: org/apache/commons/httpclient/HttpMethod
这个类找不到
你看看 包倒进去了吗 或者版本是否匹配
[解决办法]
 com.zbht.servlet.SystemStartup在随服务器启动实例化的时候报错大概是由于
 org/apache/commons/httpclient/HttpMethod这个包没有
你检查一下是否缺少了某jar包
[解决办法]
1、httpclient包没导入
2、httpclient包版本不正确或有冲突,据我所知httpclient包有多个版本。

热点排行