编译错误:包javax.servlet不存在
我有一个导入javax.servlet.*和javax.servlet.http的包* 当我试图在命令提示符下编译它时,我得到了错误 包javax.servlet不存在编译错误:包javax.servlet不存在,java,servlets,compilation,compiler-errors,Java,Servlets,Compilation,Compiler Errors,我有一个导入javax.servlet.*和javax.servlet.http的包* 当我试图在命令提示符下编译它时,我得到了错误 包javax.servlet不存在 我使用JDK 1.7.0和Tomcat 6.0。您需要将Tomcat的/lib/servlet api.jar文件的路径添加到编译时类路径中 javac-cp/path/to/Tomcat/lib/servlet-api.jar com/example/MyServletClass.java 类路径是Java需要查找导入的依赖
我使用JDK 1.7.0和Tomcat 6.0。您需要将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.*;
导入jakarta.servlet.http.*;
另见:
它是JSP还是Servlet
实际上,这两个包并不像Java.io那样内置到Java中。相反,它们配备了支持Servlet的Web服务器(例如Tomcat)。因此,在Java编译器能够编译我们的Servlet之前,我们需要让它知道在这两个包中的哪里可以找到类
所需的类通常存储在名为servlet.jar的文件中。此文件的确切位置取决于您使用的特定Web服务器软件,但对于Tomcat,您可以在Tomcat主安装目录的lib子目录中找到它(例如d:\Program Files\Apache Group\jakarta-Tomcat-3.2.3\lib\servlet.jar)。为了使Java编译器能够编译servlet,您需要将此文件添加到Java类路径中。默认情况下,Java只在当前目录(“.”)中查找类。因此,“.”是默认的类路径。如果更改类路径以包含servlet.jar文件(“;d:…\lib\servlet.jar”在Windows下,在Unix中为“.:/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中javac使用:代替
server1>javac-classpath.“:./servlet/servlet.jar”MyServlet.java
将servlet-api.jar添加到类路径中。它将被放入Tomcat的lib文件夹中。JSP和Servlet是服务器端编程。它作为一个内置包出现在像Tomcat这样的服务器中。
这条路可能是明智的
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;
在linux环境中,软链接显然不起作用。您必须使用物理路径。例如,在我的机器上,我有一个位于/usr/share/tomacat7/lib/servlet api.jar的软链接,使用它作为我的类路径参数导致编译失败,并出现相同的错误。相反,我必须使用软链接指向的文件/usr/share/java/tomcat-servlet-api-3.0.jar
。如果您使用的是maven项目,那么将以下依赖项添加到pom.xml中
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
javax.servlet
javax.servlet-api
3.0.1
假如
这是我找到的。在我的环境变量中添加/usr/local/apache-tomcat-7.0.64/lib/servlet-api.jar作为Mac上的类路径
如果使用bash:~/.bash\u profile$CLASSPATH=/usr/local/apache-tomcat-7.0.64/lib/servlet-api.jar
如果使用zsh:~/.zshrc exportCLASSPATH=“usr/local/apache-tomcat-7.0.64/lib/servlet-api.jar”
强制它立即工作,运行source.bash_profile
(或.zshrc)
或者,您可以重新启动计算机,使其为当前用户工作。这就是我解决问题的原因:
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.2</version>
<scope>provided</scope>
</dependency>
javax.servlet.jsp
jsp api
2.2
假如
从位置您的安装路径\tomcat\lib\servlet api.jar复制文件“servlet api.jar,并将文件粘贴到您的Java目录您的安装路径\Java\jdk1.8.0\u 121\jre\lib\ext
这将起作用(已测试)。即使尝试了建议的解决方案,它也不能解决我的问题,因为我输入了许多java路径实例
我从“path,java_HOME,JRE_HOME”中删除了所有与java相关的path(不同版本的java),并从fresh中创建
我已设置(路径可能会根据不同的安装而更改)
A.JAVA\u主页为C:\Program Files\JAVA\jdk1.8.0\u 191
BJRE\U主页为C:\Program Files\Java\jdk1.8.0\U 191\JRE\lib
C在路径C:\Program Files\Java\jdk1.8.0\U 191\bin中添加二进制文件路径
D类路径为C:\apache-tomcat-7.0.93\lib
如果在更改/编辑系统/用户变量时命令提示符已打开,则切勿尝试使用相同的命令提示符。关闭它并打开一个新的
参考图像:
可能的解决方案(在ubuntu上测试)
开放式终端类型geany.bashrc
转到顶部并粘贴此
export CLASSPATH=$CLASSPATH:/web/apache-tomcat-8.5.39/lib/servlet-api.jar
现在保存并关闭
现在试着运行这个程序
之所以会发生这种情况,是因为java没有提供Servlet-api.jar来直接导入,所以您需要像从Tomcat一样从外部导入它,为此我们需要提供lib文件夹的类路径,我们将从中导入Servlet及其相关类。
对于Windows,您可以应用此方法:
打开命令提示符
类型
它将获取导入Servlet、HttpServlet等所需的所有jar文件
并编译java文件
您可以添加多个类路径,例如
从
javac -classpath "C:\Program Files\Apache Software Foundation\Tomcat 9.0\lib\*;" YourFileName.java
javac -classpath "C:\Users\Project1\WEB-INF\lib\*; C:\Program Files\Apache Software Foundation\Tomcat 9.0\lib\*;" YourFileName.java