首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mac上的Tomcat 10在编译servlet时不识别servlet-api.jar

Mac上的Tomcat 10在编译servlet时不识别servlet-api.jar
EN

Stack Overflow用户
提问于 2022-04-21 15:59:15
回答 1查看 352关注 0票数 0

我正在为tomcat网页创建Servlet,Servlet不会编译。

我使用servlet-api.jar & mysql-connector.8.0.28.jar作为servlet,我还创建了几个JavaBeans来存储在数据库和页面之间传递的信息。

tomcat的目录结构如下:

所有的./Tomcat/tomcat-10/lib/

  • the文件都在要编译的./Tomcat/tomcat-10/webapps/CenterStage/WEB-INF/classes/

  • the servlet中存储在./Tomcat/tomcat-10/webapps/CenterStage/WEB-INF/classes/

  • the bean中存储在./Tomcat/tomcat-10/webapps/CenterStage/WEB-INF/classes/centerStage/

这是我用来编译所有内容的命令:

代码语言:javascript
复制
javac -cp .:./Tomcat/tomcat-10/lib/servlet-api.jar:./Tomcat/tomcat-10/lib/mysql-connector-java-8.0.28.jar -classpath ./Tomcat/tomcat-10/webapps/CenterStage/WEB-INF/classes/:./Tomcat/tomcat-10/lib/ ./Tomcat/tomcat-10/webapps/CenterStage/WEB-INF/classes/CenterStageServlet.java

当我试图编译servlet时,我会看到指向HttpServlet类的9个错误:

代码语言:javascript
复制
./Tomcat/tomcat-10/webapps/CenterStage/WEB-INF/classes/CenterStageServlet.java:32: error: cannot find symbol
public class CenterStageServlet extends HttpServlet {
                                        ^
  symbol: class HttpServlet
./Tomcat/tomcat-10/webapps/CenterStage/WEB-INF/classes/CenterStageServlet.java:25: error: cannot find symbol
@WebServlet(name = "CenterStageServlet", 
 ^
  symbol: class WebServlet
./Tomcat/tomcat-10/webapps/CenterStage/WEB-INF/classes/CenterStageServlet.java:41: error: cannot find symbol
   public void doGet(HttpServletRequest request, HttpServletResponse response)
                     ^
  symbol:   class HttpServletRequest
  location: class CenterStageServlet
./Tomcat/tomcat-10/webapps/CenterStage/WEB-INF/classes/CenterStageServlet.java:41: error: cannot find symbol
   public void doGet(HttpServletRequest request, HttpServletResponse response)
                                                 ^
  symbol:   class HttpServletResponse
  location: class CenterStageServlet
./Tomcat/tomcat-10/webapps/CenterStage/WEB-INF/classes/CenterStageServlet.java:42: error: cannot find symbol
         throws IOException, ServletException {
                             ^
  symbol:   class ServletException
  location: class CenterStageServlet
./Tomcat/tomcat-10/webapps/CenterStage/WEB-INF/classes/CenterStageServlet.java:6: error: package jakarta.servlet does not exist
import jakarta.servlet.*;             // Tomcat 10
^
./Tomcat/tomcat-10/webapps/CenterStage/WEB-INF/classes/CenterStageServlet.java:7: error: package jakarta.servlet.http does not exist
import jakarta.servlet.http.*;
^
./Tomcat/tomcat-10/webapps/CenterStage/WEB-INF/classes/CenterStageServlet.java:8: error: package jakarta.servlet.annotation does not exist
import jakarta.servlet.annotation.*;  // Tomcat 10
^
./Tomcat/tomcat-10/webapps/CenterStage/WEB-INF/classes/CenterStageServlet.java:40: error: method does not override or implement a method from a supertype
   @Override
   ^
9 errors

Servlet代码:

代码语言:javascript
复制
package centerStage;

// To save as "<TOMCAT_HOME>\webapps\CenterStage\WEB-INF\classes\CenterStageServlet.java"
import java.io.*;
import java.sql.*;
import jakarta.servlet.*;             // Tomcat 10
import jakarta.servlet.http.*;
import jakarta.servlet.annotation.*;  // Tomcat 10
//import javax.servlet.*;             // Tomcat 9
//import javax.servlet.http.*;
//import javax.servlet.annotation.*;
import java.text.NumberFormat;
import java.text.SimpleDateFormat;
import java.sql.Date;
import java.time.LocalDate;

import centerStage.*;
 
@WebServlet(name = "CenterStageServlet", 
            urlPatterns = {"/appointment", "/availibility", "/barber", "/client", "/service"})    
            // Configure the request URL for this servlet (Tomcat 7/Servlet 3.0 upwards)


public class CenterStageServlet extends HttpServlet {

    // Variables
    
   // The doGet() runs once per HTTP GET request to this servlet.
   @Override
   public void doGet(HttpServletRequest request, HttpServletResponse response)
         throws IOException, ServletException {
 
       // Do some processing
   }

   // Other Methods
}

我已经验证了我正在寻找的..jar在/lib/目录中。

在Tomcat目录中编译其他what应用程序不会给我带来任何问题,所以我不知道问题是什么。

任何帮助/建议都会很好!

EN

回答 1

Stack Overflow用户

发布于 2022-04-22 16:42:04

好吧,原来是很简单的事。

当我将servlet从~Tomcat/webapp/CenterStage/WEB/classes/转移到~Tomcat/webapps/CenterStage/WEB-INF/classes/centerStage/,然后尝试使用javac -cp .:~/Tomcat/lib/servlet-api.jar:~/Tomcat/lib/mysql-connector-java-8.0.28.jar ./Tomcat/webapps/CenterStage/WEB-INF/classes/centerStage/*.java编译时,一切都很好。

因此,基本上,我应该将Servlet.java放在与JavaBeans相同的目录中,并且一切正常。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71957486

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档