我有一个包,其中导入了javax.servlet.*和javax.servlet.http.*,当我试图在命令提示符中编译它时,就会得到错误信息。
包javax.servlet不存在
我使用JDK 1.7.0和Tomcat6.0。
发布于 2012-02-08 12:26:39
您需要将Tomcat的/lib/servlet-api.jar
文件的路径添加到编译时类路径。
javac -cp .;/path/to/Tomcat/lib/servlet-api.jar com/example/MyServletClass.java
类路径是Java需要查找导入依赖项的地方。否则,它将默认为当前文件夹,该文件夹在上面的示例中作为.
包含。;
是Windows的路径分隔符;如果使用基于Unix的操作系统,则需要使用:
。
如果您仍然面临相同的复杂错误,并且实际使用Tomcat 10或更高版本,那么您应该将源代码中的导入从javax.*
迁移到jakarta.*
。
import jakarta.servlet.*;
import jakarta.servlet.http.*;
如果您想继续使用javax.*
,那么您应该降级到Tomcat 9或更高版本,因为这是仍然使用旧javax.*
命名空间的最新版本。
另请参阅:
发布于 2015-11-09 05:11:40
如果您正在使用maven项目,那么将以下依赖项添加到您的pom.xml中
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
发布于 2012-02-08 12:29:01
它是JSP还是Servlet?
嗯,这两个包实际上并没有像java.io那样内置到Java中。相反,它们附带了支持Servlet的Web服务器(例如Tomcat)。因此,在Java编译器能够编译我们的Servlet之前,我们需要让它知道在这两个包中找到类的位置。
所需的类通常存储在一个名为servlet.jar的文件中。该文件的确切位置将取决于您使用的特定Web服务器软件,但在Tomcat的情况下,您可以在Tomcat安装主目录的lib子目录中找到它(例如d:\Program \Apache Group\jakarta 3.2.3\lib\servlet.jar)。为了使Java编译器能够编译Servlets,需要将该文件添加到Java类路径中。默认情况下,Java在当前目录(".")中查找类。只有这样。因此,“。”是默认的类路径。如果您将类路径更改为包含servlet.jar文件(Windows下的“.;d:...\lib\servlet.jar”,“/usr/./lib/servlet.jar”),那么Servlet应该编译得很好。
您可以指定在运行javac.exe时使用的类路径,如下所示:
d:\javadev> javac -classpath ".;d:\Program Files\Apache Group\ jakarta-tomcat-3.2.3\lib\servlet.jar" MyServlet.java
或者在Linux中使用:而不是;
server1> javac -classpath ".:./servlet/servlet.jar" MyServlet.java
https://stackoverflow.com/questions/9193228
复制相似问题