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

时间:2012-02-08 12:22:48

标签: java servlets compilation compiler-errors

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

  

包javax.servlet不存在

我使用的是JDK 1.7.0和Tomcat 6.0。

13 个答案:

答案 0 :(得分:70)

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

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

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

答案 1 :(得分:24)

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

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

答案 2 :(得分:9)

是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文件(Windows下的“.; d:... \ lib \ servlet.jar”,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

答案 3 :(得分:6)

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

答案 4 :(得分:5)

这就解决了我的问题:

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

答案 5 :(得分:3)

YOUR_INSTILLATION_PATH \ tomcat \ lib \ servlet-api.jar 位置复制文件“ servlet-api.jar ”并将文件粘贴到Java目录 YOUR_INSTILLATION_PATH \爪哇\ jdk1.8.0_121 \ JRE \ lib中\分机

这将起作用(测试)。

答案 6 :(得分:2)

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

答案 7 :(得分:2)

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;

答案 8 :(得分:0)

这是我发现的。在我的环境变量中将/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) 或者可以重新启动计算机,它适用于当前用户。

答案 9 :(得分:0)

即使尝试了建议的解决方案,它也不能解决我的问题,因为我输入了许多Java路径实例。

  1. 我从“ Path,JAVA_HOME,JRE_HOME”中删除了所有与Java相关的路径(不同版本的Java),并从新创建。

  2. 我已设置(路径可能会因不同的安装而改变)
    一种。 JAVA_HOME为C:\ Program Files \ Java \ jdk1.8.0_191
    b。 JRE_HOME作为C:\ Program Files \ Java \ jdk1.8.0_191 \ jre \ lib
    C。在路径中添加二进制文件路径:C:\ Program Files \ Java \ jdk1.8.0_191 \ bin
    d。 CLASSPATH为C:\ apache-tomcat-7.0.93 \ lib

  3. 如果在进行更改/创建系统/用户变量时已经打开,请不要尝试在同一命令提示符下尝试。关闭它并打开新的。

参考图片: enter image description here

答案 10 :(得分:0)

http://www.java2s.com/Code/JarDownload/javax.servlet/javax.servlet.jar.zip

从该位置下载zip文件,解压后放入如下路径

%JAVA_HOME%/jre/lib/ext/

将文件放在没有任何目录的地方

答案 11 :(得分:-1)

可能的解决方案(在 ubuntu 上进行了测试)

  1. 打开终端类型geany .bashrc
  2. 转到顶部并将其粘贴
    export CLASSPATH=$CLASSPATH:/web/apache-tomcat-8.5.39/lib/servlet-api.jar
  3. 现在保存并关闭
  4. 立即尝试运行该程序。

答案 12 :(得分:-1)

之所以会发生这种情况,是因为Java不提供直接导入的Servlet-api.jar,因此您需要像从Tomcat一样从外部导入它,为此,我们需要提供lib文件夹的类路径。导入Servlet及其相关的类。

对于Windows,您可以应用此方法:

  1. 打开命令提示符
  2. 类型
 javac -classpath "C:\Program Files\Apache Software Foundation\Tomcat 9.0\lib\*;" YourFileName.java 
     
  1. 它将获取导入Servlet,HttpServlet等所需的所有jar文件 并编译您的Java文件。

  2. 您可以添加多个类路径,例如。

javac -classpath "C:\Users\Project1\WEB-INF\lib\*; C:\Program Files\Apache Software Foundation\Tomcat 9.0\lib\*;" YourFileName.java