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] 毫秒内完成。
问题分析:
根据提供的日志信息,分析出以下问题:
- Tomcat 服务器在 57 毫秒内启动。
- 服务器成功连接。
- 工件部署成功,耗时 1,059 毫秒。
- 数据库连接成功。
- 数据源初始化成功。
- 出现 NoSuchMethodException 异常,表明在 com.scq.ems.domain.employee 类中找不到默认的构造函数。
- 异常堆栈信息指出该异常发生在 datautil.java 文件的 23 行,代码为
Object pojo=cs.getConstructor().newInstance();。
- 异常的根本原因是
com.scq.ems.domain.employee 类缺少默认构造函数,导致无法实例化该类的对象。
解决方案:
- 确保
com.scq.ems.domain.employee 类中存在一个无参数的构造函数。
- 检查代码中是否存在其他错误或异常,例如
com.scq.ems.dao.impl.emsdaoimpl.Allemp 方法、com.scq.ems.SERVLET.mesActionServlet.selectEmployee 方法等。
- 确保数据库连接配置正确,并且数据库已经启动并可访问。
- 检查第四行日志中提到的 JAR 文件,确保包含了必要的 TLD 文件。
建议:
- 添加必要的日志记录,以便更好地跟踪程序运行情况和排查问题。
- 在代码中进行必要的异常处理,避免程序崩溃。
- 确保代码的质量,并进行必要的测试,减少错误的发生。