读书人

关于java定时器的有关问题

发布时间: 2013-07-16 22:38:05 作者: rapoo

关于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包有多个版本。

读书人网 >Java Web开发

热点推荐