【问题标题】:package javax.servlet.http does not exist [duplicate]包 javax.servlet.http 不存在 [重复]
【发布时间】:2011-12-01 17:32:58
【问题描述】:

我将 jre7 和 jdk1.7.0 与 Tomcat 7.0 一起安装,但它显示此错误。 servlet.http 不是唯一一个“不存在”的,还有其他(servlet.)组件。

谁能帮我解决这个问题?

更新: 当我尝试以下命令时会发生此错误: javac -classpath servlet-api.jar WebTest.java

【问题讨论】:

  • 检查您的课程路径。如何检查它取决于您使用的 IDE。可能不包括 Tomcat 库。
  • 你没有说错误发生在哪里或如何发生的,所以帮助将是......棘手的。
  • 不存在哪里?您使用的是什么 IDE?
  • 我尝试用命令提示符来做
  • 那么你很可能错过了类路径

标签: java servlets


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    如果您使用命令控制台编译 servlet,那么您应该在编译类路径中包含 Tomcat 的 /lib/servlet-api.jar

    javac -cp .:/path/to/tomcat/lib/servlet-api.jar com/example/MyServlet.java
    

    (在 Windows 中使用; 而不是: 作为路径分隔符)

    如果您使用的是 IDE,那么您应该将 Tomcat 集成到 IDE 中,并将其作为项目中的目标运行时引用。如果您使用 Eclipse 作为 IDE,另请参阅以下内容了解更多详细信息:How do I import the javax.servlet API in my Eclipse project?

    【讨论】:

    • 运行该命令时出现此错误:javac: no source files Usage: javac 使用 -help 获取可能选项列表 -bash: /usr/local/ apache-tomcat-8.0.28/lib/servlet-api.jar:权限被拒绝
    • 没关系,修好了。这就是为什么(从另一个堆栈溢出帖子复制):CLASSPATH 分隔符是 : 在 Unix 系统上和 ;在 Windows 上。因此,如果在 Mac 上,请将上述命令中的分号替换为冒号。
    【解决方案3】:

    您的 CLASSPATH 变量未指向包含 javax 类的目录。 CLASSPATH 变量指定 java 编译器应该在哪里寻找 java 类文件资源。如果它不知道在 javax 目录中查找,那么它将永远找不到您要查找的文件。

    【讨论】:

    • javax 目录在哪里?
    • C:\Program Files\Tomcat-3.2.3\lib\servlet.jar
    • 假设你有tomcat的位置,比如:c:\tomcat 在命令提示符类型:set classpath=c:\tomcat\lib\servlet.jar
    • 只是额外的建议,您可能使用的任何第三方库都需要进入 WEB-INF\lib 然后重新启动 tomcat
    • @ashutoshrina 来自未来的消息:从tomcat 5-6开始,就叫servlet-api.jar
    【解决方案4】:

    在 *nix 上,尝试:

    javac -cp $CLASSPATH:$CATALINA_HOME/lib/servlet-api.jar Filename.java
    

    或者在 Windows 上,试试:

    javac -cp %CLASSPATH%;%CATALINA_HOME%\lib\servlet-api.jar Filename.java
    

    【讨论】:

    • 我还在一个 2018 年的老式 Linux 机器上发现 servlet-api.jar 文件的名称中有一个前缀,所以它是:tomcat-servlet-3.0-api.jar
    【解决方案5】:

    如果您正在使用 Ant 并尝试构建,那么您需要:

    1. 通过&lt;property name="tomcat-home" value="C:\xampp\tomcat" /&gt;指定tomcat位置

    2. 将 tomcat 库添加到您已经定义的 jar 路径中

      <path id="libs"> <fileset includes="*.jar" dir="${WEB-INF}/lib" /> <fileset includes="*.jar" dir="${tomcat-home}/bin" /> <fileset includes="*.jar" dir="${tomcat-home}/lib" /> </path>

    【讨论】:

      【解决方案6】:

      当您使用支持 Servlet API 的类编译 java 程序时会发生此错误。编译器使用 CLASSPATH 搜索库(包含在 .jar 文件中)。您可以在使用 -classpath-cp 选项进行编译时指定这一点,如其他响应中所述,但您应该设置您的环境以根据需要定义类路径。

      设置 CLASSPATH 环境变量以引用 servlet-api.jar 的位置,这取决于您的设置(操作系统、安装方式等)

      假设您正在使用 Tomcat 并以 20 种可能的方式之一安装它,则 servlet 使用的 API 将安装在您的系统上,相对于 Tomcat 的安装位置。由于历史原因,Tomcat 也被称为“Catalina”,因此您可以使用命令“catalina”来运行某些命令,它会单独报告CATALINA_BASE。例如,在我的 Mac 上,使用自制软件安装的 Tomcat 是

      Using CATALINA_BASE:   /usr/local/Cellar/tomcat/8.5.9/libexec
      

      Tomcat servlet 库的位置在 lib 目录下。 设置 CATALINA_BASE,然后使用 base 作为开始设置 CLASSPATH,例如对于 Linux 或 OSX,您可以在 .profile.bash_profile 中设置它,如下所示:

      export CATALINA_BASE=/usr/local/Cellar/tomcat/8.5.9/libexec
      export CLASSPATH=$CATALINA_BASE/lib/servlet-api.jar:$CLASSPATH
      

      退出终端/shell并返回运行配置文件。您应该能够看到该变量是使用echo 命令设置的,例如

      echo $CLASSPATH
      

      或在 Windows 中

      echo %CLASSPATH%
      

      如果它显示 jar `javac WebTest.java' 的完整路径,则编译你的类。

      其他答案是正确的 - 设置您的 IDE(Eclipse、IntelliJ)以了解 Tomcat 或使用 Maven 构建,这样您就省去了麻烦。

      【讨论】:

        【解决方案7】:

        可行的解决方案是将下一个依赖项添加到我的 pom.xml 文件中。

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

        【讨论】:

          【解决方案8】:

          如果您使用 elcipse 和 tomcat 服务器,您可以通过右键单击项目打开设置属性 -> 选择属性(或 Alt+Enter),继续执行下图相同的操作。它会解决你的问题。

          【讨论】:

            【解决方案9】:

            您必须添加classpath 进行编译。在tomcat中

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

            所以命令是

            javac -classpath "c:\Program Files\Apache Software Foundation\Tomcat 6.0\lib\servlet-api.jar" yourfile.java .
            

            【讨论】:

              【解决方案10】:

              由于 tomcat 发行版中奇怪的文件权限,在 linux 上出现此错误。某些文件和目录对其他用户不可读。我使用单独的 CATALINA_HOME 和 CATALINA_BASE,所以我的 tomcat 由 root 拥有并由受限用户运行。

              这样修复它:

              ( cd /usr/local/share/tomcat9/ && for file in `find ./ -type d ! -perm -o=r`; do echo "$file"; chmod o+rx "$file"; done && for file in `find ./ ! -perm -o=r`; do echo "$file"; chmod o+r "$file"; done )
              for file in `find /usr/local/share/tomcat9/ ! -perm -o=x -name '*.sh'`; do echo "$file"; chmod o+x "$file"; done 
              

              【讨论】:

                【解决方案11】:

                试试:

                javac -cp .;"C:\Users\User Name\Tomcat\apache-tomcat-7.0.108\lib\servlet-api.jar" HelloServlet.java
                

                如果类路径中有空格,则使用 windows。

                【讨论】:

                  【解决方案12】:

                  您所要做的就是下载 servlet-api.jar 包。加载包并重置重置虚拟机

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 1970-01-01
                    • 2011-12-17
                    • 1970-01-01
                    • 2012-10-28
                    • 2021-02-26
                    • 1970-01-01
                    • 1970-01-01
                    • 2016-09-29
                    相关资源
                    最近更新 更多