有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java编译错误:包javax。servlet不存在

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

package javax.servlet does not exist

我使用JDK1.7.0和Tomcat6.0


共 (6) 个答案

  1. # 1 楼答案

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

    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>3.0.1</version>
        <scope>provided</scope>
    </dependency>
    
  2. # 2 楼答案

    它是JSP还是Servlet

    这两个包实际上不像Java那样内置在Java中。伊奥是。相反,它们配备了支持Servlet的Web服务器(例如Tomcat)。因此,在Java编译器能够编译我们的Servlet之前,我们需要让它知道在这两个包中的哪里可以找到类

    所需的类通常存储在名为servlet的文件中。罐子此文件的确切位置取决于您使用的特定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下,.:/usr/../lib/servlet.jar”在Unix中),然后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. # 3 楼答案

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

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

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

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

    import jakarta.servlet.*;
    import jakarta.servlet.http.*;
    

    如果出于任何原因想继续使用javax.*,那么应该降级到Tomcat 9或更旧版本,因为这是仍然使用旧javax.*名称空间的最新版本

    另请参见:

  4. # 4 楼答案

    从您的安装路径\tomcat\lib\servlet api的位置复制文件“servlet api.jar”。jar并将文件粘贴到您的Java目录您的\u institlation\u PATH\Java\jdk1。8.0_121\jre\lib\ext

    这将起作用(经过测试)

  5. # 5 楼答案

    这就是我解决问题的原因:

    <dependency>
        <groupId>javax.servlet.jsp</groupId>
        <artifactId>jsp-api</artifactId>
        <version>2.2</version>
        <scope>provided</scope>
    </dependency>
    
  6. # 6 楼答案

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