包javax.servlet.http不存在

时间:2011-10-05 18:32:10

标签: java servlets

我安装了jre7和jdk1.7.0以及Tomcat 7.0,但是它显示了这个错误。 servlet.http不是唯一一个“不存在”的,还有其他(servlet。)组件。

有人可以帮我吗?

更新: 我尝试以下命令时会发生此错误: javac -classpath servlet-api.jar WebTest.java

12 个答案:

答案 0 :(得分:22)

如果您正在使用maven项目,请将以下依赖项添加到您的pom.xml

<dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>3.0.1</version>
        <scope>provided</scope>
</dependency>

答案 1 :(得分:17)

如果您正在使用命令控制台编译servlet,那么您应该在编译类路径中包含Tomcat的/lib/servlet-api.jar

javac -cp .:/path/to/tomcat/lib/servlet-api.jar com/example/MyServlet.java

(在Windows中使用;代替:作为路径分隔符)

如果您使用的是IDE,则应将Tomcat集成到IDE中,并将其作为项目中的目标运行时引用。如果您使用Eclipse作为IDE,请参阅此更多详细信息:How do I import the javax.servlet API in my Eclipse project?

答案 2 :(得分:16)

您的CLASSPATH变量未指向包含javax类的目录。 CLASSPATH变量指定java编译器应查找java类文件资源的位置。如果它不知道查看javax目录,那么它将永远不会找到你所追求的文件。

答案 3 :(得分:4)

在* nix上,尝试:

javac -cp $CLASSPATH:$CATALINA_HOME/lib/servlet-api.jar Filename.java

或在Windows上,尝试:

javac -cp %CLASSPATH%;%CATALINA_HOME%\lib\servlet-api.jar Filename.java

答案 4 :(得分:4)

如果您正在使用Ant并尝试构建,那么您需要:

  1. <property name="tomcat-home" value="C:\xampp\tomcat" />

  2. 指定tomcat位置
  3. 通过

    将tomcat库添加到已定义的jar路径中

    <path id="libs"> <fileset includes="*.jar" dir="${WEB-INF}/lib" /> <fileset includes="*.jar" dir="${tomcat-home}/bin" /> <fileset includes="*.jar" dir="${tomcat-home}/lib" /> </path>

答案 5 :(得分:2)

使用支持Servlet API的类编译java程序时会发生此错误。编译器使用CLASSPATH搜索库(包含在.jar文件中)。您可以使用其他响应中所述的-classpath-cp选项进行编译时指定此选项,但您应该根据需要设置环境以定义类路径。

设置CLASSPATH环境变量以引用servlet-api.jar的位置,这取决于您的设置(操作系统,安装方式等)

假设您正在使用Tomcat并以20种可能的方式之一安装它,那么servlet使用的API将安装在您的系统上,相对于安装Tomcat的地方。由于历史原因,Tomcat也被称为&#34; Catalina&#34;,因此您可以使用命令&#34; catalina&#34;为了运行某些命令,它将单独报告CATALINA_BASE。例如在我的Mac上使用使用自制软件安装Tomcat的

Using CATALINA_BASE:   /usr/local/Cellar/tomcat/8.5.9/libexec

Tomcat servlet库的位置在lib目录下。 设置CATALINA_BASE,然后使用base作为开始设置CLASSPATH,例如对于Linux或OSX,您可以在.profile.bash_profile中设置它,如下所示:

export CATALINA_BASE=/usr/local/Cellar/tomcat/8.5.9/libexec
export CLASSPATH=$CATALINA_BASE/lib/servlet-api.jar:$CLASSPATH

退出终端/ shell并返回以运行配置文件。您应该能够看到使用echo命令设置变量,例如

echo $CLASSPATH

或在Windows中

echo %CLASSPATH%

如果它显示jar`javac WebTest.java的完整路径&#39;编译你的课程。

其他答案是正确的 - 设置您的IDE(Eclipse,IntelliJ)以了解Tomcat或使用Maven构建,您将节省痛苦。

答案 6 :(得分:0)

您必须添加classpath才能进行编译。在tomcat

classpath="C:\Program Files\Apache Software Foundation\Tomcat 6.0\lib\servlet-api.jar".

所以命令是

javac -classpath "c:\Program Files\Apache Software Foundation\Tomcat 6.0\lib\servlet-api.jar" yourfile.java .

答案 7 :(得分:0)

适用的解决方案是将下一个依赖项添加到我的pom.xml文件中。

<dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>3.0.1</version>
        <scope>provided</scope>
</dependency>

答案 8 :(得分:0)

由于tomcat发行版中奇怪的文件权限,在Linux上收到此错误。目录中的某些文件对其他用户不可读。我使用单独的CATALINA_HOME和CATALINA_BASE,所以我的tomcat由root拥有,并由受限用户运行。

像这样修复它:

( cd /usr/local/share/tomcat9/ && for file in `find ./ -type d ! -perm -o=r`; do echo "$file"; chmod o+rx "$file"; done && for file in `find ./ ! -perm -o=r`; do echo "$file"; chmod o+r "$file"; done )
for file in `find /usr/local/share/tomcat9/ ! -perm -o=x -name '*.sh'`; do echo "$file"; chmod o+x "$file"; done 

答案 9 :(得分:0)

如果您在tomcat服务器上使用elcipse,则可以通过右键单击项目打开设置属性->选择“属性”(或Alt + Enter),继续执行下图所示的操作。它将解决您的问题。

enter image description here

答案 10 :(得分:0)

试试:

javac -cp .;"C:\Users\User Name\Tomcat\apache-tomcat-7.0.108\lib\servlet-api.jar" HelloServlet.java

如果类路径中有空格,则使用窗口。

答案 11 :(得分:-7)

您要做的就是下载servlet-api.jar包。加载程序包并重置重置虚拟机