首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >编译错误:包javax.servlet不存在

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

Stack Overflow用户
提问于 2012-02-08 12:22:47
回答 13查看 244.9K关注 0票数 71

我有一个包,其中导入了javax.servlet.*和javax.servlet.http.*,当我试图在命令提示符中编译它时,就会得到错误信息。

包javax.servlet不存在

我使用JDK 1.7.0和Tomcat6.0。

EN

回答 13

Stack Overflow用户

回答已采纳

发布于 2012-02-08 12:26:39

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

代码语言:javascript
运行
复制
javac -cp .;/path/to/Tomcat/lib/servlet-api.jar com/example/MyServletClass.java

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

如果您仍然面临相同的复杂错误,并且实际使用Tomcat 10或更高版本,那么您应该将源代码中的导入从javax.*迁移到jakarta.*

代码语言:javascript
运行
复制
import jakarta.servlet.*;
import jakarta.servlet.http.*;

如果您想继续使用javax.*,那么您应该降级到Tomcat 9或更高版本,因为这是仍然使用旧javax.*命名空间的最新版本。

另请参阅:

票数 97
EN

Stack Overflow用户

发布于 2015-11-09 05:11:40

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

代码语言:javascript
运行
复制
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.0.1</version>
    <scope>provided</scope>
</dependency>
票数 38
EN

Stack Overflow用户

发布于 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

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9193228

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档