SpringBoot启动报错LibraryNotFoundError,Can‘t load library:tcnative-1.dll

文章讲述了在使用SpringBoot和Tomcat开发Web应用时遇到的LibraryNotFoundError,原因是Tomcat需要的本地库(如.tcnative-1.dll和libtcnative-1.dll)未在系统路径中找到,尤其在SpringBoot的嵌入式Tomcat环境下。解决方法是将官方提供的.dll文件放在WindowsSystem32目录下。
摘要由CSDN通过智能技术生成

项目场景:

在这个项目中,我们正在使用SpringBoot和Tomcat来开发一个Web应用。我们的应用需要频繁地与客户端进行数据交换,因此我们选择了使用Tomcat的APR(Apache Portable Runtime)来提高性能。然而,当我们尝试运行我们的应用时,我们遇到了一个问题:我们的应用无法找到Tomcat需要的本地库。


问题描述

项目报错完整信息如下

org.apache.tomcat.jni.LibraryNotFoundError: Can't load library: E:\projectSpace\questionnaire\bin\tcnative-1.dll, Can't load library: E:\projectSpace\questionnaire\bin\libtcnative-1.dll, no tcnative-1 in java.library.path: [E:\jdks\jdk-11.0.21_windows-x64_bin\jdk-11.0.21\bin, C:\Windows\Sun\Java\bin, C:\Windows\system32, C:\Windows, C:\Program Files (x86)\VMware\VMware Workstation\bin\, C:\Program Files (x86)\Common Files\Oracle\Java\javapath, C:\Windows\system32, C:\Windows, C:\Windows\System32\Wbem, C:\Windows\System32\WindowsPowerShell\v1.0\, C:\Windows\System32\OpenSSH\, C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common, C:\Program Files\NVIDIA Corporation\NVIDIA NvDLISR, C:\Program Files\Java\jdk1.8.0_221\bin, D:\nvm, D:\nodejs, C:\Program Files\Git\cmd, D:\Redis-x64-3.2.100, D:\javadevelop\ffmpeg, C:\Program Files (x86)\NetSarang\Xftp 7\, C:\Windows\System32\cmd.exe, D:\develop\go1.20.6.windows-amd64\go\bin, D:\javadevelop\nodejs\, D:\develop\WeChat\微信web开发者工具\dll, D:\develop\chromedriver_win32, C:\Program Files (x86)\dotnet\, D:\BaiduNetdiskDownload\jiongjionganquan\netcat-1.11, E:\software\微信web开发者工具\dll, E:\Apache\apache-maven-3.9.6\bin, E:\datebases\mariadb-10.6.17-winx64\bin, E:\developtools\Microsoft VS Code\bin, C:\Program Files\Cloudflare\Cloudflare WARP\, C:\Program Files\MySQL\MySQL Shell 8.1\bin\, C:\Users\Lenovo\AppData\Local\Programs\Python\Python311\Scripts\, C:\Users\Lenovo\AppData\Local\Programs\Python\Python311\, D:\dev\python\python3.10.4\Scripts\, D:\dev\python\python3.10.4\, C:\Users\Lenovo\AppData\Local\Microsoft\WindowsApps, D:\nvm, D:\nodejs, C:\Program Files\JetBrains\PyCharm 2023.1\bin, ., C:\Program Files\JetBrains\GoLand 2023.1.1\bin, ., C:\ProgramData\Lenovo\GitHubDesktop\bin, C:\Users\Lenovo\AppData\Local\GitHubDesktop\bin, C:\Users\Lenovo\AppData\Roaming\npm, D:\develop\, E:\developtools\Microsoft VS Code Insiders\bin, .], no libtcnative-1 in java.library.path: [E:\jdks\jdk-11.0.21_windows-x64_bin\jdk-11.0.21\bin, C:\Windows\Sun\Java\bin, C:\Windows\system32, C:\Windows, C:\Program Files (x86)\VMware\VMware Workstation\bin\, C:\Program Files (x86)\Common Files\Oracle\Java\javapath, C:\Windows\system32, C:\Windows, C:\Windows\System32\Wbem, C:\Windows\System32\WindowsPowerShell\v1.0\, C:\Windows\System32\OpenSSH\, C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common, C:\Program Files\NVIDIA Corporation\NVIDIA NvDLISR, C:\Program Files\Java\jdk1.8.0_221\bin, D:\nvm, D:\nodejs, C:\Program Files\Git\cmd, D:\Redis-x64-3.2.100, D:\javadevelop\ffmpeg, C:\Program Files (x86)\NetSarang\Xftp 7\, C:\Windows\System32\cmd.exe, D:\develop\go1.20.6.windows-amd64\go\bin, D:\javadevelop\nodejs\, D:\develop\WeChat\微信web开发者工具\dll, D:\develop\chromedriver_win32, C:\Program Files (x86)\dotnet\, D:\BaiduNetdiskDownload\jiongjionganquan\netcat-1.11, E:\software\微信web开发者工具\dll, E:\Apache\apache-maven-3.9.6\bin, E:\datebases\mariadb-10.6.17-winx64\bin, E:\developtools\Microsoft VS Code\bin, C:\Program Files\Cloudflare\Cloudflare WARP\, C:\Program Files\MySQL\MySQL Shell 8.1\bin\, C:\Users\Lenovo\AppData\Local\Programs\Python\Python311\Scripts\, C:\Users\Lenovo\AppData\Local\Programs\Python\Python311\, D:\dev\python\python3.10.4\Scripts\, D:\dev\python\python3.10.4\, C:\Users\Lenovo\AppData\Local\Microsoft\WindowsApps, D:\nvm, D:\nodejs, C:\Program Files\JetBrains\PyCharm 2023.1\bin, ., C:\Program Files\JetBrains\GoLand 2023.1.1\bin, ., C:\ProgramData\Lenovo\GitHubDesktop\bin, C:\Users\Lenovo\AppData\Local\GitHubDesktop\bin, C:\Users\Lenovo\AppData\Roaming\npm, D:\develop\, E:\developtools\Microsoft VS Code Insiders\bin, .]
	at org.apache.tomcat.jni.Library.<init>(Library.java:102) ~[tomcat-embed-core-9.0.46.jar:9.0.46]
	at org.apache.tomcat.jni.Library.initialize(Library.java:206) ~[tomcat-embed-core-9.0.46.jar:9.0.46]
	at org.apache.catalina.core.AprLifecycleListener.init(AprLifecycleListener.java:193) ~[tomcat-embed-core-9.0.46.jar:9.0.46]
	at org.apache.catalina.core.AprLifecycleListener.isAprAvailable(AprLifecycleListener.java:102) ~[tomcat-embed-core-9.0.46.jar:9.0.46]


原因分析:

这是因为Tomcat中的connector为了提高性能,采用了加载与操作系统绑定(非跨平台)的本地库的方式,比如Windows系统中就是.dll动态链接库。上述异常中找不到的两个.dll库文件,默认会去Tomcat的bin目录下去找,但是由于SpringBoot的Tomcat是嵌入式的,没有xx.dll


解决方案:

官方地址下载,并放到C:\Windows\System32\目录下,springboot项目就可以正常运行了
在这里插入图片描述

  • 6
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱跑步的程序员~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值