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

9

在我的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]

请问应该在哪里修复这个错误以避免出现此问题?请给出具体的修复方法。
4个回答

5

由于对我来说答案不完整,而且这是谷歌为研究找到的第一个主题,所以我会说出解决我的问题的方法。

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

希望能帮助到某些人!

来源:启动时APR版本不匹配错误


5

好的,那么对于Linux系统,我们需要替换 'libtcnative-1' 文件,是吗?我是否需要使用命令生成我的特定于Tomcat的 'libtcnative-1',还是从源代码中复制粘贴就可以了,例如 - https://archive.apache.org/dist/tomcat/tomcat-connectors/native/1.1.32/source/ - nightfury
1
copy paste should be fine - Alien

4
同样的问题也发生在我身上。我的情况是我在机器上安装了Tomcat 8.0.37,所以它被嵌入式Tomcat使用(来自Spring Boot),通过CATALINA_HOME。我检查了Spring Boot所使用的Tomcat版本(在我的情况下是2.0.5.RELEASE),它是8.5.34,然后我只需用最新版本替换旧版本,并当然也更改了CATALINA_HOME。然后警告就消失了。
我认为我的方法比下载一些本地Tomcat库并将其放置在JDK附近更好。

我所能看到的唯一问题是,如果有一些生产代码因为某种原因与旧版本配合良好但无法与新版本兼容。例如,你需要进行回归测试才能完全保险。虽然在实践中我无法预测这可能会造成什么实际冲突,但你永远不知道直到出现错误。否则,这比使用粘贴进来的.dll文件更好。 - J E Carter II
@ JECarterII说得有道理,当然它也可能会出错。但是如果复制本地库,它也可能会中断。从以下角度来看,这是相当棘手的变化:我们没有完全控制和视野去进行改变。 - Dmitry Senkovich

1
您可能(不正确地)升级了Tomcat,因此您拥有旧版本的本机库。您需要使用随Tomcat版本一起发行的版本。
Tomcat在发行版的bin/目录中附带本机库。确保您没有某些旧版本的文件残留。您可能需要从头开始重新构建libtcnative并将其与嵌入式应用程序重新打包。
或者,考虑采用非本机解决方案并切换到Tomcat的NIO连接器。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接