25-Aug-2023 20:07:49.566 信息 [main] org.apache.catalina.startup.Catalina.start 服务器在 [57] 毫秒后启动。 已连接到服务器。 [2023-08-25 08:07:49,878] Artifact 2023.08.23:war exploded: 正在部署工件,请稍候... 25-Aug-2023 20:07:50.883 信息 [RMI TCP Connection(3)-127.0.0.1] org.apache.jasper.servlet.TldScanner.scanJars 至少有一个 JAR 被扫描用于 TLD 但尚未包含 TLD。为此记录器启用调试日志记录,以获取已扫描但未在其中找到 TLD 的完整 JAR 列表。在扫描期间跳过不需要的 JAR 可以缩短启动时间和 JSP 编译时间。 [2023-08-25 08:07:50,937] Artifact 2023.08.23:war exploded: 工件已成功部署。 [2023-08-25 08:07:50,937] Artifact 2023.08.23:war exploded: 部署耗时 1,059 毫秒。 连接到数据库,返回数据库对象。 25-Aug-2023 20:07:56.378 信息 [http-nio-8080-exec-3] com.alibaba.druid.pool.DruidDataSource.info {dataSource-1} 已初始化。 java.lang.NoSuchMethodException: com.scq.ems.domain.employee.() at java.lang.Class.getConstructor0(Class.java:3110) at java.lang.Class.getConstructor(Class.java:1853) at com.scq.ems.util.datautil.getData(datautil.java:23): 代码: Object pojo=cs.getConstructor().newInstance(); at com.scq.ems.dao.impl.emsdaoimpl.Allemp(emsdaoimpl.java:20) return datautil.getdatautil().getData( at com.scq.ems.SERVLET.mesActionServlet.selectEmployee(mesActionServlet.java:85) Listemployees= ed.Allemp(); at com.scq.ems.SERVLET.mesActionServlet.service(mesActionServlet.java:32) this.selectEmployee(request,response); at javax.servlet.http.HttpServlet.service(HttpServlet.java:733) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:687) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357) at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:374) at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1707) at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:750) 25-Aug-2023 20:07:59.573 信息 [Catalina-utility-2] org.apache.catalina.startup.HostConfig.deployDirectory 将 web 应用程序部署到目录 [D:\APaChe\apache-tomcat-9.0.45\apache-tomcat-9.0.45\webapps\manager] 25-Aug-2023 20:08:00.128 信息 [Catalina-utility-2] org.apache.jasper.servlet.TldScanner.scanJars 至少有一个 JAR 被扫描用于 TLD 但尚未包含 TLD。为此记录器启用调试日志记录,以获取已扫描但未在其中找到 TLD 的完整 JAR 列表。在扫描期间跳过不需要的 JAR 可以缩短启动时间和 JSP 编译时间。 25-Aug-2023 20:08:00.136 信息 [Catalina-utility-2] org.apache.catalina.startup.HostConfig.deployDirectory Web 应用程序目录 [D:\APaChe\apache-tomcat-9.0.45\apache-tomcat-9.0.45\webapps\manager] 的部署已在 [563] 毫秒内完成。

问题分析:

根据提供的日志信息,分析出以下问题:

  1. Tomcat 服务器在 57 毫秒内启动。
  2. 服务器成功连接。
  3. 工件部署成功,耗时 1,059 毫秒。
  4. 数据库连接成功。
  5. 数据源初始化成功。
  6. 出现 NoSuchMethodException 异常,表明在 com.scq.ems.domain.employee 类中找不到默认的构造函数。
  7. 异常堆栈信息指出该异常发生在 datautil.java 文件的 23 行,代码为 Object pojo=cs.getConstructor().newInstance();
  8. 异常的根本原因是 com.scq.ems.domain.employee 类缺少默认构造函数,导致无法实例化该类的对象。

解决方案:

  1. 确保 com.scq.ems.domain.employee 类中存在一个无参数的构造函数。
  2. 检查代码中是否存在其他错误或异常,例如 com.scq.ems.dao.impl.emsdaoimpl.Allemp 方法、com.scq.ems.SERVLET.mesActionServlet.selectEmployee 方法等。
  3. 确保数据库连接配置正确,并且数据库已经启动并可访问。
  4. 检查第四行日志中提到的 JAR 文件,确保包含了必要的 TLD 文件。

建议:

  1. 添加必要的日志记录,以便更好地跟踪程序运行情况和排查问题。
  2. 在代码中进行必要的异常处理,避免程序崩溃。
  3. 确保代码的质量,并进行必要的测试,减少错误的发生。
Tomcat 服务器启动及部署日志分析 - NoSuchMethodException 异常排查

原文地址: https://www.cveoy.top/t/topic/quNw 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录