java - 编译时错误:包 javax.servlet 不存在 import javax.servlet.*
问题描述
我已将类路径设置如下: CLASS_PATH: C:\Program Files\Apache Software Foundation\Tomcat 10.0\lib;C:\Program Files (x86)\Java\mysql-connector.jar;C:\Program Files (x86) \Java\sqljdbc_8.2\enu\mssql-jdbc-8.2.0.jre8.jar;
我还尝试在编译时使用 jar 文件:- java -cp C:\Program Files\Apache Software Foundation\Tomcat 10.0\lib\servlet-api.jar Hello.java
java -cp "C:\Program Files\Apache Software Foundation\Tomcat 10.0\lib\servlet-api.jar" Hello.java
java -cp .;C:\Program Files\Apache Software Foundation\Tomcat 10.0\lib\servlet-api.jar Hello.java
java -cp ".;"C:\Program Files\Apache Software Foundation\Tomcat 10.0\lib\servlet-api.jar" Hello.java
java -cp C:\Program Files\Apache Software Foundation\Tomcat 10.0\lib\servlet-api.jar;. Hello.java
java -cp "C:\Program Files\Apache Software Foundation\Tomcat 10.0\lib\servlet-api.jar";. Hello.java
我还尝试将 -cp 替换为类路径,但每次仍然出现以下错误:
C:\Program Files\Apache Software Foundation\Tomcat 10.0\webapps\16 servlet\WEB-INF\classes>javac -cp .;servlet-api.jar; Hello.java
Hello.java:2: error: package javax.servlet does not exist
import javax.servlet.*;
^
Hello.java:3: error: cannot find symbol
public class Hello implements Servlet
^
symbol: class Servlet
Hello.java:5: error: cannot find symbol
public void init(ServletConfig sc)throws ServletException
^
symbol: class ServletConfig
location: class Hello
Hello.java:5: error: cannot find symbol
public void init(ServletConfig sc)throws ServletException
^
symbol: class ServletException
location: class Hello
Hello.java:9: error: cannot find symbol
public ServletConfig getServletConfig()
^
symbol: class ServletConfig
location: class Hello
Hello.java:13: error: cannot find symbol
public void service(ServletRequest req,ServletResponse res)throws ServletException
^
symbol: class ServletRequest
location: class Hello
Hello.java:13: error: cannot find symbol
public void service(ServletRequest req,ServletResponse res)throws ServletException
^
symbol: class ServletResponse
location: class Hello
Hello.java:13: error: cannot find symbol
public void service(ServletRequest req,ServletResponse res)throws ServletException
^
symbol: class ServletException
location: class Hello
8 errors
我的 Hello.java Servlet 文件:-
import java.io.*;
import javax.servlet.*;
public class Hello implements Servlet
{
public void init(ServletConfig sc)throws ServletException
{
}
public ServletConfig getServletConfig()
{
return null;
}
public void service(ServletRequest req,ServletResponse res)throws ServletException
{
String name=req.getParameter("name");
PrintWriter out=res.getWriter();
out.println("Hello "+name);
}
public String getServletInfo()
{
return null;
}
public void destroy()
{
}
}
tbh 我在 netbeans IDE 上也尝试了其他 Servlet java 程序,它运行良好,但即使在搜索并尝试了所有可能的解决方案之后,我也无法自己明确配置它,请大家帮我解决它。
解决方案
Tomcat 10 目前是一个里程碑式的版本,因此对于第一步或有意义的开发工作来说并不是很好,除非您特别想找出问题的根本原因:
Tomcat 10 不向后兼容,因为整个 Java EE(或它所属的任何标签)现在都被新的 Jakarta EE 取代,因此您import javax.servlet.*
现在需要import jakarta.servlet.*
.
与其立即调整所有内容,不如只使用 Tomcat 9 并使用旧的和(随处记录),您可能会更快乐javax.servlet.*
推荐阅读
- javascript - IONIC 3 - 以编程方式清除应用程序数据
- vue.js - Vue 路由器,router.onReady()
- php - 使用 php 包含重用代码时出现意外的“<”
- python - Python使用基于IF条件的ElementTree解析XML
- git - GIT / bitbucket - 如何在bitbucket的主服务器上排除1次提交后被推送
- css - 如何更改引导边框的颜色(不是表格边框)
- azure - 是否可以在 azure VM 中运行 Docker CE?
- android - Android、Firestore、跨活动的用户数据共享
- google-speech-api - Google Speech API 流式传输音频
- python - Python/Numba/@jit:在使用返回值作为参数的递归函数中避免全局变量