java.lang.NoSuchMethodError: javax.servlet.ServletContext.getContextPath()

     今天在eclipse中加入了tomcat支持,在eclipse中打开web项目出现错误提示缺少servlet-api.jar于是随便找了个servlet-api.jar加入到plugin中,再在eclipse中将包加到web项目中,错误消失了,然而在我启动Tomcat服务时又报java.lang.NoSuchMethodError: javax.servlet.ServletContext.getContextPath()Ljava/lang/String

 ,查网页才知道:

1. javax.servlet.ServletContext为servlet-api.jar内的类,通过反编译,发现Tomcat 6.0以前的版本的servlet-api.jar内的ServletContext类没有getContextPath()方法,而新的Tomcat 6.0及以后版本有这个方法,而且server 启动时需要调用这个方法

Tomcat 6.0 before public interface ServletContext
{
    public abstract ServletContext getContext(String s);
}
Tomcat 6.0 later public interface ServletContext
{
    public abstract ServletContext getContext(String s);
    public abstract String getContextPath();
}

所有错误原因是Tomcat 6.0启动的时候错调用了别的版本的servlet-api.jar

解决方法是在将现在使用的servlet-api.jar换成tomcat的lib下的servlet-api.jar后重新启动tomcat就OK了。

你可能感兴趣的:(Java,EE)