突然SpringBoot项目启动后,无法连接,开启debug后,报如下异常:



org.apache.tomcat.jni.LibraryNotFoundError: Can't load library: temp-springboot\bin\tcnative-1.dll, Can't load library: temp-springboot\bin\libtcnative-1.dll, no tcnative-1 in java.library.path, no libtcnative-1 in java.library.path
	at org.apache.tomcat.jni.Library.<init>(Library.java:102) ~[tomcat-embed-core-9.0.37.jar:9.0.37]
	at org.apache.tomcat.jni.Library.initialize(Library.java:206) ~[tomcat-embed-core-9.0.37.jar:9.0.37]
	at org.apache.catalina.core.AprLifecycleListener.init(AprLifecycleListener.java:198) [tomcat-embed-core-9.0.37.jar:9.0.37]
	at org.apache.catalina.core.AprLifecycleListener.isAprAvailable(AprLifecycleListener.java:107) [tomcat-embed-core-9.0.37.jar:9.0.37]
	at org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory.getDefaultLifecycleListeners(TomcatServletWebServerFactory.java:168) [spring-boot-2.2.9.RELEASE.jar:2.2.9.RELEASE]
	at org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory.<init>(TomcatServletWebServerFactory.java:119) [spring-boot-2.2.9.RELEASE.jar:2.2.9.RELEASE]
	at org.springframework.boot.autoconfigure.web.servlet.ServletWebServerFactoryConfiguration$EmbeddedTomcat.tomcatServletWebServerFactory(ServletWebServerFactoryConfiguration.java:75) [spring-boot-autoconfigure-2.2.9.RELEASE.jar:2.2.9.RELEASE]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_221]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_221]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_221]
	at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_221]
	at org.springframework.............................................
	at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:747) ~[spring-boot-2.2.9.RELEASE.jar:2.2.9.RELEASE]
	at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:397) ~[spring-boot-2.2.9.RELEASE.jar:2.2.9.RELEASE]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:315) ~[spring-boot-2.2.9.RELEASE.jar:2.2.9.RELEASE]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1226) ~[spring-boot-2.2.9.RELEASE.jar:2.2.9.RELEASE]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1215) ~[spring-boot-2.2.9.RELEASE.jar:2.2.9.RELEASE]
	at com.demo.SpringBootApplication.main(SpringBootApplication.java:12) ~[classes/:na]


    查了下原因居然是 Tomcat 没有找到 JNI 动态链接库。看一下项目下bin文件夹消失了。

    动态链接库去哪找呢,这个版本的 Tomcat 才有 apache-tomcat-9.0.37-windows-x64.zip

    如下图,在其 bin 目录下:


    在项目下新建一个 bin 文件夹,将 tcnative-1.dll 放进去,启动项目查看是否报错;