HttpServletRequest.getServletContext()一直提示找不到,而引出的问题
开发j2ee项目的时候,需要用到servlet-api,如果使用了maven,web项目可以在pom.xml中手动加入所需jar包,达到与依赖j2ee libarary同样的功能。可问题来了:
1. 问题描述
最近使用myeclipse10.7用maven开发一个web项目,就遇到了这样一个问题:
由于项目的servlet类中使用了servlet-api-3.0相应的方法,即HttpServletRequest类的一个getServletContext()方法,
为了使编译通过,可在build path中添加j2ee6 libarary,或者pom.xml中引入servlet-api-3.0.jar,但虽然通过这2种方法引入使编译成功后,
运行时,servlet中仍然报找不到getServletContext()方法的错误。
2. 分析结果
追查问题后,分析可能的原因是,如果使用的是tomcat6服务器,由于tomcat6安装目录下自带的是servlet-api-2.5.jar,不支持servlet-3.0,
由此进行猜测,web应用在tomcat中运行时,运行时与编译时是不一样的。
编译使用的项目build path引入的jar包进行编译,编译完成后,运行时,tomcat应该是使用了其自带的j2ee jar包来运行web应用的,我们项目build path中引入的j2ee 相关jar包,在tomcat容器运行web项目时,已经不起作用了!
3. 待解决的问题
问题来了,有没有一种方法,使得web项目在tomcat容器中运行时,能够优先使用我们指定的jar包呢?正在百度当中。
4. 分析结果纠正
即使把servlet-api-3.0jar包替换掉tomcat6的lib目录下的servlet-api.jar包,也并不能解决问题,说明了并不是web项目运行时优先加载tomcat自带jar这种原因,而是tomcat6不支持servlet-api-3.0,使用tomcat7后,问题解决了,也说明了这个问题。
注意,如果反过来把servlet-api-2.5替换掉tomcat7目录下的servlet-api包,则容器直接无法成功启动了。
HttpServletRequest.getServletContext()一直提示找不到,而引出的问题的更多相关文章
- 如何解决找不到方法HttpServletRequest.getServletContext() ---- NoSuchMethodError
报错 java.lang.NoSuchMethodError: javax.servlet.http.HttpServletRequest.getServletContext()Ljavax/serv ...
- win10用户文件夹重命名,启用administrator账户,删除文件夹时提示找不到该项目
这一切都源自楼主洁癖一般的强迫症. 楼主在重置win10后的安装过程中用microsoft账户登录的电脑,发现用户文件夹名称怪怪的,于是想重命名一下.楼主发现重命名用户文件夹并不能简单地用F2搞定,于 ...
- javac编译不同目录的源码提示找不到符号
对于单个文件的且不引用其他类文件的java源码用javac编译大家都很熟悉即 javac mycode.java 但是如果这个文件引用到了其他的类文件,在进行编译的时候就会提示找不到符号,这时我们需要 ...
- python安装完毕后,提示找不到ssl模块的解决步骤
转载自 醇酒醉影 python安装完毕后,提示找不到ssl模块: [root@localhost ~]# python2.7.5 Python 2.7.5 (default, Jun 3 2013, ...
- 用C#调用C++DLL(x64),总是提示找不到DLL
用C#调用自己写的C++ DLL(x64),总是提示找不到DLL,调试可以,发布release老是提示找不到DLL(dll文件确定存在) 原因:Visual C++的DLL分发方式没选:调试默认选择: ...
- [综合]visio2013安装提示找不到Office.zh_cn\officeMUI.mis officemui.xml
在visio2013安装提示找不到Office.zh_cn\officeMUI.mis officemui.xml 等等,各种提示,可是打开安装程序所在的ISO,里面可是“赶集网”——啥都有啊.上网查 ...
- iis里面浏览网页,提示找不到应用程序的解决办法
iis配置成功,数据库链接正确,代码无误,在iis里面,浏览某网页,提示找不到应用程序,这时一下子懵了. 处理办法:在浏览器中直接输入网址,例如:http://192.168.1.111,这时能够打开 ...
- Visual Studio 编译项目失败,提示找不到文件
博客地址:http://blog.csdn.net/FoxDave 今天碰到了一个蠢问题,虽然咱们正常情况下是遇不到的,但这确实是个应该注意的地方,所以简单记录一下. Visual Studio ...
- 转载:mysql ODBC 在64位下提示找不到odbc驱动问题
在64位机器上,如果你想要连接32位mysql ,一般会安装mysql connector/ODBC 64位,并在配置ODBC数据源测试中连接正常,但在程序连接,如ASP.asp.net.VB.Del ...
随机推荐
- VMware 全虚拟打开
1.修改.vmx 文件,最后一行加入: hypervisor.cpuid.v0 = “FALSE" mce.enable = “TRUE" vhv.enable = “TRUE&q ...
- unity3d自带帮助文档的打开方法
1废话不提,直接上图: 2.在弹出来的浏览器窗口中点击: 3.在点击后的网页中即可以搜索了,在断网的情况下,作为资料查询还是蛮不错的.
- HDU 1010 Tempter of the Bone DFS(奇偶剪枝优化)
需要剪枝否则会超时,然后就是基本的深搜了 #include<cstdio> #include<stdio.h> #include<cstdlib> #include ...
- NSTimer内存方面的探究
今天研究一个框架,看到它对NSTimer的处理,感觉很有意思.于是自己在各种情况下都研究了一下,现总结如下. 我们用到NSTimer时,似乎习惯于会在dealloc方法中把它invalidate掉,但 ...
- python 第三方库下载
C:\Python27\Scripts 路径下: easy_install.exe: C:\Python27\Scripts>easy_install.exe pycrypto pip.exe: ...
- SQL Server触发器的禁用和启用
禁用: ALTER TABLE trig_example DISABLE TRIGGER trig1 GO 恢复: ALTER TABLE trig_example ENABLE TRIGGER tr ...
- 5--OC--构造方法
// Created by Stephen on 16/3/2.// Copyright © 2016年 Stephen. All rights reserved.//// 回顾上一章节Perso ...
- byte 读写文件
import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import ja ...
- linux shell: 取得某个目录下的文件名列表
取得某个目录下文件名的列表(没有子目录) ls -l dir/ | awk '{print "dir\\" $9}' #其中$9是ls -l 的第9个字段-文件名
- 配置F5 负载均衡(转)
转自<网络运维与管理>201406-11 配置F5交换机的问题在于,与平时所学的交换机.路由器思路完全不同,拿到设备后,完全不知如何下手. 网络拓扑图如下: 两台web服务器对外提供服务, ...