我安装了jre7和jdk1.7.0以及Tomcat 7.0,但是它显示了这个错误。 servlet.http不是唯一一个“不存在”的,还有其他(servlet。)组件。
有人可以帮我吗?
更新: 我尝试以下命令时会发生此错误: javac -classpath servlet-api.jar WebTest.java
答案 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并尝试构建,那么您需要:
按<property name="tomcat-home" value="C:\xampp\tomcat" />
通过
将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)
答案 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包。加载程序包并重置重置虚拟机