tomcat5启动说servlet-jsp.jar not loaded 说明

本文详细介绍了Java虚拟机的类装载器结构及其委托模型,并深入探讨了Tomcat5中的类装载器系统,包括各种类装载器的作用范围及装载顺序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.   Class Loader(类装载器)
1.      类装载器结构
类装载器(Class Loader)是Java虚拟机的组成部分之一,如图1所示.Java虚拟机有两种类装载器:启动类装载器和用户自定义类装载器.
URL:http://blog.blogchina.com/upload/2004-11-24/20041124104254943028.jpg

图1:Java虚拟机的内部体系结构.
启动类装载器   每个Java虚拟机实现都必须有一个启动类装载器.在Sun的JDK 1.2以后的版本中,启动类装载器只负责在系统类(核心Java API的class文件)的安装路径中查找要装入的类.
用户自定义类装载器   它是普通的Java对象,它的类必须继承自java.lang.ClassLoader类.在Sun的JDK 1.2以后的版本中,用户自定义类装载器负责核心Java API以外的其它class文件的装载.例如,用于安装或下载标准扩展的class文件,在类路径中发现的类库的class文件,用于应用程序运行的class文件,等等.
命名空间   Java虚拟机为每一个类装载器维护一个唯一标识的命名空间.一个Java程序可以多次装载具有同一个全限定名(指类所属的包名加类名,如java.lang.Object就是类Object的全限定名)的多个类(class). Java虚拟机要确定这"多个类"的唯一性,因此,当多个类装载器都装载了同名的类时,为了唯一地标识这个类,还要在类名前加上装载该类的类装载器的标识(指出了类所位于的命名空间).例如:ExtClassLoader 装载了sun.text.resources.DateFormatZoneData_zh_CN类,AppClassLoader装载了sun.text.resources.DateFormatZoneData_zh_HK类, Java虚拟机就认为这两个类位于不同的包中,彼此之间不能访问私有成员.如果AppClassLoader也装载了sun.text.resources.DateFormatZoneData_zh_CN类, 虽然"类名"相同,Java虚拟机也认为它们是不同的类,因为它们处在不同的命名空间中.
2.      委托(Delegation)模型
当Java虚拟机开始运行时,在应用程序开始启动以前,它至少创建一个用户自定义装载器,也可能创建多个.所有这些装载器被连接在一个Parent-Child的委托链中,在这个链的顶端是启动类装载器,末端是被称为"系统类装载器"的类装载器.
例如,假设你写了一个应用程序,在虚拟机上运行它.虚拟机在启动时实例化了两个用户自定义类装载器:一个"扩展类装载器",一个"类路径类装载器".这些类装载器和启动类装载器一起联入一个Parent-Child委托链中,如图2所示.
URL:http://blog.blogchina.com/upload/2004-11-24/2004112410430176267.jpg

图2arent-Child类装载器委托链
类路径类装载器的Parent是扩展类装载器, 扩展类装载器的Parent是启动类装载器.在图2中,类路径类装载器就被实例为系统类装载器.假设你的程序实例化它的网络类装载器,它就指明了系统类装载器作为它的Parent.
下面的例程说明了类装载器的父子关系.
例程1:
package test;
import java.net.URL;
import java.net.URLClassLoader;
public class ClassLoaderTest {
    private static int count = -1;
    public static void testClassLoader(Object obj) {
        if (count < 0 && obj == null) {
            System.out.println("Input object is NULL";
            return;
        }
        ClassLoader cl = null;
        if (obj != null && !(obj instanceof ClassLoader)) {
            cl = obj.getClass().getClassLoader();
        } else if (obj != null) {
            cl = (ClassLoader) obj;
        }
        count++;
        String parent = "";
        for (int i = 0; i < count; i++) {
            parent += "arent ";
        }
        if (cl != null) {
            System.out.println(
                parent + "ClassLoader name = " + cl.getClass().getName());
            testClassLoader(cl.getParent());
        } else {
            System.out.println(
                parent + "ClassLoader name = BootstrapClassLoader";
            count = -1;
        }
    }
    public static void main(String[] args) {
        URL[] urls = new URL[1];
        URLClassLoader urlLoader = new URLClassLoader(urls);
        ClassLoaderTest.testClassLoader(urlLoader);
    }
}
以上例程的输出为:
ClassLoader name = java.net.URLClassLoader
Parent ClassLoader name = sun.misc.Launcher$AppClassLoader
Parent Parent ClassLoader name = sun.misc.Launcher$ExtClassLoader
Parent Parent Parent ClassLoader name = BootstrapClassLoader
类装载器请求过程
以上例程1为例.将main方法改为:
        ClassLoaderTest tc = new ClassLoaderTest();
        ClassLoaderTest.testClassLoader(tc);
输出为:
ClassLoader name = sun.misc.Launcher$AppClassLoader
Parent ClassLoader name = sun.misc.Launcher$ExtClassLoader
Parent Parent ClassLoader name = BootstrapClassLoader
程序运行过程中,类路径类装载器发出一个装载ClassLoaderTest类的请求, 类路径类装载器必须首先询问它的Parent---扩展类装载器---来查找并装载这个类,同样扩展类装载器首先询问启动类装载器.由于ClassLoaderTest不是Java API(JAVA_HOME/jre/lib)中的类,也不在已安装扩展路径(JAVA_HOME/jre/lib/ext)上,这两类装载器都将返回而不会提供一个名为ClassLoaderTest的已装载类给类路径类装载器.类路径类装载器只能以它自己的方式来装载ClassLoaderTest,它会从当前类路径上下载这个类.这样,ClassLoaderTest就可以在应用程序后面的执行中发挥作用.
在上例中, ClassLoaderTest类的testClassLoader方法被首次调用,该方法引用了Java API中的类java.lang.String.Java虚拟机会请求装载ClassLoaderTest类的类路径类装载器来装载java.lang.String.就像前面一样,类路径类装载器首先将请求传递给它的Parent类装载器,然后这个请求一路被委托到启动类装载器.但是,启动类装载器可以将java.lang.String类返回给类路径类装载器,因为它可以找到这个类,这样扩展类装载器就不必在已安装扩展路径中查找这个类,类路径类装载器也不必在类路径中查找这个类.扩展类装载器和类路径类装载器仅需要返回由启动类装载器返回的类java.lang.String.从这一刻开始,不管何时ClassLoaderTest类引用了名为java.lang.String的类,虚拟机就可以直接使用这个java.lang.String类了.
在上述过程中也可能会发生错误,在本文下面的例子中将会涉及.
3.      装载 连接及初始化
在一个Java类的生命周期中,装载,连接和初始化只是其开始阶段.只有开始阶段结束以后,类才可以被实例化并被使用.整个开始阶段必须按以下顺序进行:
1)装载   把二进制形式的Java class读入虚拟机中.
2)连接   把已经读入虚拟机的二进制形式的类数据合并到虚拟机的运行状态中去.连接阶段分为验证,准备和解析三个子步骤.
3)初始化   给类变量赋以适当的初始值.
Java虚拟机允许类装载器(启动或用户自定义类装载器)缓存Java class的二进制形式,在预知某个类将要被使用时就装载它.如果一个类装载器在预先装载时遇到问题,它应该在该类被"首次主动使用"时报告该问题(通过抛出一个java.lang.LinkageError的子类).也就是说,如果一个类装载器在预先装载时遇到缺失或错误的class文件,它必须等到程序首次被主动使用该类时才报告错误.如果这个类一直没有被程序主动使用,那么该类装载器将不会报告错误.
二.  Tomcat5中的Class Loader
当Tomcat5启动的时候,它会首先创建一组class loader,如commonLoader, sharedLoader, catalinaLoader,webappLoader等.其委托模型如下图3所示:
     Bootstrap
          |
     System
          |
     Common
       /      /
Catalina   Shared
                 /
                Webapp1 ...
图3:Tomcat5类装载器委托模型
其中,
1)    Bootstrap 该类装载器装载JAVA_HOME/jre/lib和JAVA_HOME/jre/lib/ext两目录上的JAR包.
2)    System 该类装载器装载当前CLASSPATH上的JAR包.在Windows系统下, CLASSPATH环境变量会在CATALINA_HOME/bin/setclasspath.bat和CATALINA_HOME/bin/catalina.bat文件中被重新设置.
3)    Common 该类装载器装载CATALINA_HOME/common/classes目录中的类, CATALINA_HOME/commons/endorsed和CATALINA_HOME/common/lib目录中的JAR包.
4)    Catalina 该类装载器装载CATALINA_HOME/server/classes和CATALINA_HOME/server/lib目录中的类和JAR包.
5)    Shared 该类装载器装载CATALINA_HOME/shared/classes和CATALINA_HOME/shared/lib目录中的类和JAR包.
6)    WebappX 该类装载器装载WEB-INF/classes和WEB-INF/lib目录中的类和JAR包.

需要补充说明的是,WebappX类装载器独立于上文提到的Java2的委托模型.当WebappX类装载器装载一个类时,它会首先查找本身所辖目录(即WEB-INF/classes和WEB-INF/lib)下的类,而不会启动委托机制.当然对于Bootstrap和System类装载器中存在的类,是要进行委托的.另外,对于下面这些包中的类,如:
javax.*
org.xml.sax.*
org.w3c.dom.*
org.apache.xerces.*
org.apache.xalan.*
WebappX类装载器装载时也要启动委托机制.
例如,假设ojdbc14.jar处在setclasspath.bat中的CLASSPATH下,同时也处在WEB-INF/lib目录下.类装载器系统在请求装载oracle.jdbc.driver.OracleDriver类时,会得到从System类装载器返回的类,而不是WebappX类装载器.
再假设ojdbc14.jar处在CATALINA_HOME/common/lib和WEB-INF/lib目录下,而没有处在setclasspath.bat中的CLASSPATH下,那么类装载器系统就会得到从WebappX类装载器返回的类,而不是Common类装载器.
另外,如果WEB-INF/lib目录下存在包含有servlet API类的JAR包,该JAR包将会被WebappX类装载器忽略.例如,
考虑到应用程序的编译问题,你可能会把servlet-api.jar包Copy到应用程序中的WEB-INF/lib目录下.那么,在Tomcat5启动时,启动屏幕上就会出现如下输出:
2004/09/12 14:53:57 org.apache.catalina.loader.WebappClassLoader validateJarFile
情报: validateJarFile(E:/MyData/myProjects/MyBS_SQL/web/WEB-INF/lib/servlet-api.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class
上述信息并不影响你的程序运行.因为WebappX类装载器虽然会忽略掉WEB-INF/lib目录下servlet-api.jar包,但是,Common类装载器已经装载了servlet-api.jar包.如前所述,对于javax.*中的类, WebappX类装载器是要启动委托机制的,所以WebappX类装载器会得到Common类装载器返回的javax.*中的类.
如果不希望Tomcat5启动时输出上述信息,只需将servlet-api.jar包从应用程序中的WEB-INF/lib目录下移走就行了.
总结一下,Tomcat5类装载器系统在请求装载一个类时,它以下面列举的顺序进行:
·         Bootstrap (JAVA_HOME/jre/lib和JAVA_HOME/jre/lib/ext)
·         System (当前CLASSPATH上)
·         /WEB-INF/classes 和/WEB-INF/lib/*.jar
·         CATALINA_HOME/common/classes
·         CATALINA_HOME/common/endorsed/*.jar
·         CATALINA_HOME/common/lib/*.jar
·         CATALINA_HOME/shared/classes 和CATALINA_HOME/shared/lib/*.jar
 
at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75) ~[tomcat-embed-core-9.0.31.jar!/:9.0.31] at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:145) ~[na:na] at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:909) ~[tomcat-embed-core-9.0.31.jar!/:9.0.31] at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:262) ~[tomcat-embed-core-9.0.31.jar!/:9.0.31] at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) ~[tomcat-embed-core-9.0.31.jar!/:9.0.31] at org.apache.catalina.core.StandardService.startInternal(StandardService.java:421) ~[tomcat-embed-core-9.0.31.jar!/:9.0.31] at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) ~[tomcat-embed-core-9.0.31.jar!/:9.0.31] at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:930) ~[tomcat-embed-core-9.0.31.jar!/:9.0.31] at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) ~[tomcat-embed-core-9.0.31.jar!/:9.0.31] at org.apache.catalina.startup.Tomcat.start(Tomcat.java:467) ~[tomcat-embed-core-9.0.31.jar!/:9.0.31] at org.springframework.boot.web.embedded.tomcat.TomcatWebServer.initialize(TomcatWebServer.java:107) ~[spring-boot-2.2.5.RELEASE.jar!/:2.2.5.RELEASE] at org.springframework.boot.web.embedded.tomcat.TomcatWebServer.<init>(TomcatWebServer.java:88) ~[spring-boot-2.2.5.RELEASE.jar!/:2.2.5.RELEASE] at org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory.getTomcatWebServer(TomcatServletWebServerFactory.java:438) ~[spring-boot-2.2.5.RELEASE.jar!/:2.2.5.RELEASE] at org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory.getWebServer(TomcatServletWebServerFactory.java:191) ~[spring-boot-2.2.5.RELEASE.jar!/:2.2.5.RELEASE] at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.createWebServer(ServletWebServerApplicationContext.java:180) ~[spring-boot-2.2.5.RELEASE.jar!/:2.2.5.RELEASE] at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.onRefresh(ServletWebServerApplicationContext.java:153) ~[spring-boot-2.2.5.RELEASE.jar!/:2.2.5.RELEASE] at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:544) ~[spring-context-5.2.4.RELEASE.jar!/:5.2.4.RELEASE] at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:141) ~[spring-boot-2.2.5.RELEASE.jar!/:2.2.5.RELEASE] at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:747) ~[spring-boot-2.2.5.RELEASE.jar!/:2.2.5.RELEASE] at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:397) ~[spring-boot-2.2.5.RELEASE.jar!/:2.2.5.RELEASE] at org.springframework.boot.SpringApplication.run(SpringApplication.java:315) ~[spring-boot-2.2.5.RELEASE.jar!/:2.2.5.RELEASE] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1226) ~[spring-boot-2.2.5.RELEASE.jar!/:2.2.5.RELEASE] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1215) ~[spring-boot-2.2.5.RELEASE.jar!/:2.2.5.RELEASE] at com.cn.travel.TravelApplication.main(TravelApplication.java:16) ~[classes!/:0.0.1-SNAPSHOT] at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) ~[na:na] at java.base/java.lang.reflect.Method.invoke(Method.java:580) ~[na:na] at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:48) ~[travel-0.0.1-SNAPSHOT.jar:0.0.1-SNAPSHOT] at org.springframework.boot.loader.Launcher.launch(Launcher.java:87) ~[travel-0.0.1-SNAPSHOT.jar:0.0.1-SNAPSHOT] at org.springframework.boot.loader.Launcher.launch(Launcher.java:51) ~[travel-0.0.1-SNAPSHOT.jar:0.0.1-SNAPSHOT] at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:52) ~[travel-0.0.1-SNAPSHOT.jar:0.0.1-SNAPSHOT] Caused by: java.lang.IllegalStateException: Not a file URL at org.springframework.boot.loader.jar.Handler.getRootJarFile(Handler.java:304) ~[travel-0.0.1-SNAPSHOT.jar:0.0.1-SNAPSHOT] ... 58 common frames omitted 2025-07-10 04:43:26.009 INFO 26542 --- [ main] org.apache.jasper.servlet.TldScanner : At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time. 2025-07-10 04:43:26.012 INFO 26542 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext 2025-07-10 04:43:26.012 INFO 26542 --- [ main] o.s.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 1442 ms 2025-07-10 04:43:26.070 INFO 26542 --- [ main] c.a.d.s.b.a.DruidDataSourceAutoConfigure : Init DruidDataSource 2025-07-10 04:43:26.258 INFO 26542 --- [ main] com.alibaba.druid.pool.DruidDataSource : {dataSource-1} inited 2025-07-10 04:43:26.368 INFO 26542 --- [ main] o.hibernate.jpa.internal.util.LogHelper : HHH000204: Processing PersistenceUnitInfo [name: default] 2025-07-10 04:43:26.468 INFO 26542 --- [ main] org.hibernate.Version : HHH000412: Hibernate ORM core version 5.4.12.Final 2025-07-10 04:43:26.607 INFO 26542 --- [ main] o.hibernate.annotations.common.Version : HCANN000001: Hibernate Commons Annotations {5.1.0.Final} 2025-07-10 04:43:26.789 INFO 26542 --- [ main] org.hibernate.dialect.Dialect : HHH000400: Using dialect: org.hibernate.dialect.MariaDB103Dialect 2025-07-10 04:43:26.819 WARN 26542 --- [ main] o.h.e.j.e.i.JdbcEnvironmentInitiator : HHH000341: Could not obtain connection metadata : Unknown column 'RESERVED' in 'WHERE' 2025-07-10 04:43:26.819 INFO 26542 --- [ main] org.hibernate.dialect.Dialect : HHH000400: Using dialect: org.hibernate.dialect.MariaDB103Dialect 2025-07-10 04:43:26.986 INFO 26542 --- [ main] o.h.e.t.j.p.i.JtaPlatformInitiator : HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform] 2025-07-10 04:43:26.990 INFO 26542 --- [ main] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default' 2025-07-10 04:43:27.624 WARN 26542 --- [ main] JpaBaseConfiguration$JpaWebConfiguration : spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning MyBatisConfiguration.pageHelper() 2025-07-10 04:43:27.806 INFO 26542 --- [ main] o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'applicationTaskExecutor' 2025-07-10 04:43:27.887 INFO 26542 --- [ main] o.s.b.a.w.s.WelcomePageHandlerMapping : Adding welcome page template: index 2025-07-10 04:43:27.933 WARN 26542 --- [ main] org.thymeleaf.templatemode.TemplateMode : [THYMELEAF][main] Template Mode 'LEGACYHTML5' is deprecated. Using Template Mode 'HTML' instead. 2025-07-10 04:43:27.958 INFO 26542 --- [ main] t.m.m.autoconfigure.MapperCacheDisabler : Clear tk.mybatis.mapper.util.MsUtil CLASS_CACHE cache. 2025-07-10 04:43:27.959 INFO 26542 --- [ main] t.m.m.autoconfigure.MapperCacheDisabler : Clear tk.mybatis.mapper.genid.GenIdUtil CACHE cache. 2025-07-10 04:43:27.960 INFO 26542 --- [ main] t.m.m.autoconfigure.MapperCacheDisabler : Clear tk.mybatis.mapper.version.VersionUtil CACHE cache. 2025-07-10 04:43:27.960 INFO 26542 --- [ main] t.m.m.autoconfigure.MapperCacheDisabler : Clear EntityHelper entityTableMap cache. 2025-07-10 04:43:28.068 INFO 26542 --- [ main] o.apache.catalina.core.StandardService : Stopping service [Tomcat] 2025-07-10 04:43:28.090 INFO 26542 --- [ main] ConditionEvaluationReportLoggingListener : Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled. 2025-07-10 04:43:28.092 ERROR 26542 --- [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPLICATION FAILED TO START *************************** Description: Web server failed to start. Port 80 was already in use. Action: Identify and stop the process that's listening on port 80 or configure this application to listen on another port. 2025-07-10 04:43:28.094 INFO 26542 --- [ main] o.s.s.concurrent.ThreadPoolTaskExecutor : Shutting down ExecutorService 'applicationTaskExecutor' 2025-07-10 04:43:28.095 INFO 26542 --- [ main] j.LocalContainerEntityManagerFactoryBean : Closing JPA EntityManagerFactory for persistence unit 'default' 2025-07-10 04:43:28.096 INFO 26542 --- [ main] com.alibaba.druid.pool.DruidDataSource : {dataSource-1} closing ... 2025-07-10 04:43:28.101 INFO 26542 --- [ main] com.alibaba.druid.pool.DruidDataSource : {dataSource-1} closed ┌──(kali㉿kali)-[/mnt/hgfs/shiyansucai] └─$ sudo systemctl status mariadb ● mariadb.service - MariaDB 11.8.2 database server Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; preset: disabled) Active: active (running) since Thu 2025-07-10 03:52:33 EDT; 51min ago Invocation: 0e8e759073774f3db4beb277c6a197b5 Docs: man:mariadbd(8) https://mariadb.com/kb/en/library/systemd/ Main PID: 1079 (mariadbd) Status: "Taking your SQL requests now..." Tasks: 11 (limit: 14518) Memory: 161M (peak: 162.7M, swap: 4K, swap peak: 4K) CPU: 2.785s CGroup: /system.slice/mariadb.service └─1079 /usr/sbin/mariadbd Jul 10 03:52:32 kali mariadbd[1079]: 2025-07-10 3:52:32 0 [Note] Plugin 'wsrep-provider' is disabled. Jul 10 03:52:32 kali mariadbd[1079]: 2025-07-10 3:52:32 0 [Note] Recovering after a crash using tc.log Jul 10 03:52:32 kali mariadbd[1079]: 2025-07-10 3:52:32 0 [Note] Starting table crash recovery... Jul 10 03:52:32 kali mariadbd[1079]: 2025-07-10 3:52:32 0 [Note] Crash table recovery finished. Jul 10 03:52:32 kali mariadbd[1079]: 2025-07-10 3:52:32 0 [Note] InnoDB: Buffer pool(s) load completed at 25> Jul 10 03:52:33 kali mariadbd[1079]: 2025-07-10 3:52:33 0 [Note] Server socket created on IP: '127.0.0.1'. Jul 10 03:52:33 kali mariadbd[1079]: 2025-07-10 3:52:33 0 [Note] mariadbd: Event Scheduler: Loaded 0 events Jul 10 03:52:33 kali mariadbd[1079]: 2025-07-10 3:52:33 0 [Note] /usr/sbin/mariadbd: ready for connections. Jul 10 03:52:33 kali mariadbd[1079]: Version: '11.8.2-MariaDB-1 from Debian' socket: '/run/mysqld/mysqld.soc> Jul 10 03:52:33 kali systemd[1]: Started mariadb.service - MariaDB 11.8.2 database server. ┌──(kali㉿kali)-[/mnt/hgfs/shiyansucai] └─$ mysql -u root -p123456 -h 127.0.0.1 travel_db -e "SELECT 1;" +---+ | 1 | +---+ | 1 | +---+ ┌──(kali㉿kali)-[/mnt/hgfs/shiyansucai] └─$ tail -f /mnt/hgfs/shiyansucai/logs/application.log tail: cannot open '/mnt/hgfs/shiyansucai
最新发布
07-11
C:\huanjing\apache-tomcat-10.1.43\bin\catalina.bat run [2025-07-07 06:36:11,829] 工件 MVC-project:war exploded: 正在等待服务器连接以启动工件部署… Using CATALINA_BASE: "C:\Users\12524\AppData\Local\JetBrains\IntelliJIdea2025.1\tomcat\1e48c713-fd14-4371-ba65-0ae810dd2d86" Using CATALINA_HOME: "C:\huanjing\apache-tomcat-10.1.43" Using CATALINA_TMPDIR: "C:\huanjing\apache-tomcat-10.1.43\temp" Using JRE_HOME: "C:\Users\12524\.jdks\openjdk-24.0.1" Using CLASSPATH: "C:\huanjing\apache-tomcat-10.1.43\bin\bootstrap.jar;C:\huanjing\apache-tomcat-10.1.43\bin\tomcat-juli.jar" Using CATALINA_OPTS: "" 07-Jul-2025 18:36:12.540 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Server.服务器版本: Apache Tomcat/10.1.43 07-Jul-2025 18:36:12.542 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 服务器构建: Jul 1 2025 21:30:20 UTC 07-Jul-2025 18:36:12.542 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 服务器版本号: 10.1.43.0 07-Jul-2025 18:36:12.542 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 操作系统名称: Windows 11 07-Jul-2025 18:36:12.542 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log OS.版本: 10.0 07-Jul-2025 18:36:12.542 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 架构: amd64 07-Jul-2025 18:36:12.543 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Java 环境变量: C:\Users\12524\.jdks\openjdk-24.0.1 07-Jul-2025 18:36:12.543 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log Java虚拟机版本: 24.0.1+9-30 07-Jul-2025 18:36:12.543 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log JVM.供应商: Oracle Corporation 07-Jul-2025 18:36:12.543 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_BASE: C:\Users\12524\AppData\Local\JetBrains\IntelliJIdea2025.1\tomcat\1e48c713-fd14-4371-ba65-0ae810dd2d86 07-Jul-2025 18:36:12.543 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_HOME: C:\huanjing\apache-tomcat-10.1.43 07-Jul-2025 18:36:12.545 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Djava.util.logging.config.file=C:\Users\12524\AppData\Local\JetBrains\IntelliJIdea2025.1\tomcat\1e48c713-fd14-4371-ba65-0ae810dd2d86\conf\logging.properties 07-Jul-2025 18:36:12.545 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager 07-Jul-2025 18:36:12.545 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Dcom.sun.management.jmxremote= 07-Jul-2025 18:36:12.545 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Dcom.sun.management.jmxremote.port=1099 07-Jul-2025 18:36:12.545 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Dcom.sun.management.jmxremote.ssl=false 07-Jul-2025 18:36:12.545 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Dcom.sun.management.jmxremote.password.file=C:\Users\12524\AppData\Local\JetBrains\IntelliJIdea2025.1\tomcat\1e48c713-fd14-4371-ba65-0ae810dd2d86\jmxremote.password 07-Jul-2025 18:36:12.545 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Dcom.sun.management.jmxremote.access.file=C:\Users\12524\AppData\Local\JetBrains\IntelliJIdea2025.1\tomcat\1e48c713-fd14-4371-ba65-0ae810dd2d86\jmxremote.access 07-Jul-2025 18:36:12.545 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Djava.rmi.server.hostname=127.0.0.1 07-Jul-2025 18:36:12.545 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Djdk.tls.ephemeralDHKeySize=2048 07-Jul-2025 18:36:12.545 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Djava.protocol.handler.pkgs=org.apache.catalina.webresources 07-Jul-2025 18:36:12.545 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Dsun.io.useCanonCaches=false 07-Jul-2025 18:36:12.545 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: --add-opens=java.base/java.lang=ALL-UNNAMED 07-Jul-2025 18:36:12.546 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: --add-opens=java.base/java.lang.reflect=ALL-UNNAMED 07-Jul-2025 18:36:12.546 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: --add-opens=java.base/java.io=ALL-UNNAMED 07-Jul-2025 18:36:12.546 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: --add-opens=java.base/java.util=ALL-UNNAMED 07-Jul-2025 18:36:12.547 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: --add-opens=java.base/java.util.concurrent=ALL-UNNAMED 07-Jul-2025 18:36:12.547 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED 07-Jul-2025 18:36:12.547 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Dcatalina.base=C:\Users\12524\AppData\Local\JetBrains\IntelliJIdea2025.1\tomcat\1e48c713-fd14-4371-ba65-0ae810dd2d86 07-Jul-2025 18:36:12.548 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Dcatalina.home=C:\huanjing\apache-tomcat-10.1.43 07-Jul-2025 18:36:12.548 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Djava.io.tmpdir=C:\huanjing\apache-tomcat-10.1.43\temp WARNING: A restricted method in java.lang.System has been called WARNING: java.lang.System::load has been called by org.apache.tomcat.jni.Library in an unnamed module (file:/C:/huanjing/apache-tomcat-10.1.43/lib/tomcat-jni.jar) WARNING: Use --enable-native-access=ALL-UNNAMED to avoid a warning for callers in this module WARNING: Restricted methods will be blocked in a future release unless native access is enabled 07-Jul-2025 18:36:12.556 信息 [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent 在java.library.path:[C:\Users\12524\.jdks\openjdk-24.0.1\bin;C:\WINDOWS\Sun\Java\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\Program Files (x86)\VMware\VMware Workstation\bin\;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;C:\Program Files\MySQL\MySQL Server 8.2\bin;C:\Users\12524\AppData\Local\Microsoft\WindowsApps;;.]上找不到基于APR的Apache Tomcat本机库,该库允许在生产环境中获得最佳性能 07-Jul-2025 18:36:12.675 信息 [main] org.apache.coyote.AbstractProtocol.init 初始化协议处理器 ["http-nio-8080"] 07-Jul-2025 18:36:12.687 信息 [main] org.apache.catalina.startup.Catalina.load 服务器在[337]毫秒内初始化 07-Jul-2025 18:36:12.727 信息 [main] org.apache.catalina.core.StandardService.startInternal 正在启动服务[Catalina] 07-Jul-2025 18:36:12.727 信息 [main] org.apache.catalina.core.StandardEngine.startInternal 正在启动 Servlet 引擎:[Apache Tomcat/10.1.43] 07-Jul-2025 18:36:12.740 信息 [main] org.apache.coyote.AbstractProtocol.start 开始协议处理句柄["http-nio-8080"] 07-Jul-2025 18:36:12.784 信息 [main] org.apache.catalina.startup.Catalina.start [95]毫秒后服务器启动 已连接到服务器 [2025-07-07 06:36:12,945] 工件 MVC-project:war exploded: 正在部署工件,请稍候… 07-Jul-2025 18:36:13.884 信息 [RMI TCP Connection(2)-127.0.0.1] org.apache.jasper.servlet.TldScanner.scanJars 至少有一个JAR被扫描用于TLD但尚未包含TLD。 为此记录器启用调试日志记录,以获取已扫描但未在其中找到TLD的完整JAR列表。 在扫描期间跳过不需要的JAR可以缩短启动时间和JSP编译时间。 [2025-07-07 06:36:13,938] 工件 MVC-project:war exploded: 工件已成功部署 [2025-07-07 06:36:13,938] 工件 MVC-project:war exploded: 部署已花费 994 毫秒 07-Jul-2025 18:36:22.744 信息 [Catalina-utility-2] org.apache.catalina.startup.HostConfig.deployDirectory 把web 应用程序部署到目录 [C:\huanjing\apache-tomcat-10.1.43\webapps\manager] 07-Jul-2025 18:36:22.791 信息 [Catalina-utility-2] org.apache.catalina.startup.HostConfig.deployDirectory Web应用程序目录[C:\huanjing\apache-tomcat-10.1.43\webapps\manager]的部署已在[46]毫秒内完成
07-08
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值