基于 APR 的 Apache Tomcat 本机库的不兼容版本 [1.1.34]

incompatible version [1.1.34] of the APR based Apache Tomcat Native library

在我的 openSUSE Leap 42.3 服务器上,在 Spring Boot 2.0.0.M6 应用程序在嵌入式 Tomcat 服务器上启动期间,我在日志中看到以下错误:

ERROR 30471 --- [main] o.a.catalina.core.AprLifecycleListener: An incompatible version [1.1.34] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]

您能否解释一下应该在那里(以及在哪里)修复什么以避免这个错误?

您可能(不正确地)升级了 Tomcat,因此您使用的是旧版本的本机库。您需要使用 Tomcat.

版本附带的版本

Tomcat 随发行版的 bin/ 目录中的本机库一起提供。确保你没有在某处闲置一些旧版本。您可能需要从头开始重新构建 libtcnative 并将其与您的嵌入式应用程序重新捆绑。

或者,考虑使用非本地解决方案并切换到 Tomcat 的 NIO 连接器。

这是因为安装的系统 tomcat(CATALINA_HOME) 与 spring 启动 tomcat 的库冲突。因此,要消除此错误,请下载所需版本的本机库并替换为 bin 文件夹的 tcnative-1.dll

下载 link : https://archive.apache.org/dist/tomcat/tomcat-connectors/native/

由于答案对我来说不完整,而且这是 google 为研究找到的第一个线程,我会说是什么解决了我的问题。

我必须从 https://tomcat.apache.org/download-native.cgi 下载 Apache Tomcat 本机库,然后将 bin 文件夹的内容(带有 tcnative-1.dll)放入 jdk我使用的 bin 文件夹。

希望对大家有所帮助!

来源:APR version mismatch error upon startup

同样的事情也发生在我身上。在我的例子中,我的机器上有 Tomcat 8.0.37,所以它是通过 CATALINA_HOME 使用的(通过 Spring Boot 中的嵌入式 Tomcat)。我检查了 Tomcat 的 Spring 引导版本(在我的例子中是 2.0.5.RELEASE)使用的(它是 8.5.34)并且只是用最新的版本替换了旧版本 CATALINA_HOME当然也是。然后警告消失了。

我认为我的方法比下载一些本机 Tomcat 库并将它们放在 JDK 附近更好。