编译错误:包javax.servlet不存在

我有一个包中导入javax.servlet。*和javax.servlet.http。*当我尝试编译它在命令提示符下,我得到错误

包javax.servlet不存在

我使用JDK 1.7.0和Tomcat 6.0。

您需要将Tomcat的/lib/servlet-api.jar文件的path添加到编译时类path。

 javac -cp .;/path/to/Tomcat/lib/servlet-api.jar com/example/MyServletClass.java 

类path是Java需要查找导入的依赖项的地方。 否则将默认为包含的当前文件夹. 在上面的例子中。 The ; 是Windows的path分隔符; 如果您使用的是基于Unix的操作系统,那么您需要使用:而不是。

如果你正在使用Maven项目,那么添加以下依赖到你的pom.xml

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

它是一个JSP或Servlet?

那么,这两个包实际上并没有像java.io那样构build到Java中。 相反,他们带有支持Servlet的Web服务器(例如Tomcat)。 所以在Java编译器能够编译我们的Servlet之前,我们需要让它知道在哪里find这两个包中的类。

所需的类通常存储在一个名为servlet.jar的文件中。 这个文件的确切位置将取决于您使用的特定Web服务器软件,但是对于Tomcat,您可以在主Tomcat安装目录的lib子目录中find它(例如d:\ Program Files \ Apache Group \ jakarta- Tomcat的3.2.3 \ LIB \的servlet.jar)。 为了让Java编译器能够编译Servlet,您需要将此文件添加到Java类path中。 默认情况下,Java仅在当前目录(“。”)中查找类。 因此,“。” 是默认的类path。 如果将类path更改为在Windows下包含servlet.jar文件(“。; d:… \ lib \ servlet.jar”),则在Unix中包含“/ usr /…/ lib / servlet.jar” ),那么Servlet应该编译得很好。

您可以在运行javac.exe时指定要使用的类path,如下所示:

d:\javadev> javac -classpath ".;d:\Program Files\Apache Group\ jakarta-tomcat-3.2.3\lib\servlet.jar" MyServlet.java

或者在Linux下,javac使用:而不是;

server1> javac -classpath ".:./servlet/servlet.jar" MyServlet.java

在Linux环境下,软链接显然不起作用。 你必须使用物理path。 例如在我的机器上我有一个软链接在/usr/share/tomacat7/lib/servlet-api.jar和使用这个作为我的类path参数导致失败的编译与相同的错误。 相反,我不得不使用/usr/share/java/tomcat-servlet-api-3.0.jar这是软链接指向的文件。

这是为我解决了这个问题:

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

将servlet-api.jar添加到您的类path中。 它将在Tomcat的lib文件夹中可用。

JSP和Servlet是服务器端编程。 因为它是像Tomcat这样的服务器内置的包。 path可能像智者一样

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

只是你想要做的是以下面的方式添加这个

 Right Click> My Computer>Advanced>Environment Variables>System variables Do> New..> Variable name:CLASSPATH Variable value:CLASSPATH=.;C:\Program Files\Apache Software Foundation\Tomcat 6.0\lib\servlet-api.jar; 

这是我发现的。 在我的环境variables中添加/usr/local/apache-tomcat-7.0.64/lib/servlet-api.jar作为CLASSPATH。 操作系统是iOS。

如果使用bash:〜/ .bash_profile $CLASSPATH=/usr/local/apache-tomcat-7.0.64/lib/servlet-api.jar

如果使用zsh:〜/ .zshrc export CLASSPATH="usr/local/apache-tomcat-7.0.64/lib/servlet-api.jar"

强制它现在工作,运行source .bash_profile (或.zshrc)或者可以重新启动计算机,它适用于当前用户。