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

项目场景:

在这个项目中,我们正在使用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项目就可以正常运行了
在这里插入图片描述

相关推荐

  1. eclipse启动

    2024-04-22 19:00:06       19 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-22 19:00:06       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-22 19:00:06       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-22 19:00:06       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-22 19:00:06       18 阅读

热门阅读

  1. Linux根据进程ID查看进程的文件路径

    2024-04-22 19:00:06       12 阅读
  2. 深度学习中图像标注框的作用是什么

    2024-04-22 19:00:06       14 阅读
  3. C# 工具类

    2024-04-22 19:00:06       12 阅读
  4. PEI转染试剂使用手册

    2024-04-22 19:00:06       14 阅读
  5. MySQL-多表设计

    2024-04-22 19:00:06       11 阅读
  6. PG用户密码有效期设置

    2024-04-22 19:00:06       14 阅读
  7. Shell流程if与模式匹配case

    2024-04-22 19:00:06       14 阅读
  8. Redis:redis 版本过低

    2024-04-22 19:00:06       12 阅读
  9. 华为校招机试 - 扑克牌消除(20240417)

    2024-04-22 19:00:06       9 阅读