【问题标题】:incompatible version [1.1.34] of the APR based Apache Tomcat Native library基于 APR 的 Apache Tomcat 本机库的不兼容版本 [1.1.34]
【发布时间】:2018-07-14 16:02:29
【问题描述】:

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

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 spring-boot tomcat8 apr


    【解决方案1】:

    您可能(不正确地)升级了 Tomcat,因此您拥有旧版本的原生库。您需要使用随您的 Tomcat 版本提供的版本。

    Tomcat 在发行版的bin/ 目录中附带本机库。确保你没有一些旧版本坐在某个地方。您可能需要从头开始重新构建 libtcnative 并将其与您的嵌入式应用程序重新捆绑。

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      【解决方案3】:

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

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

      希望对某人有所帮助!

      来源:APR version mismatch error upon startup

      【讨论】:

        【解决方案4】:

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

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

        【讨论】:

        • 我能看到的唯一问题是,是否有一些生产代码出于某种原因在旧版本上运行良好,但在新版本上运行良好。例如。您需要进行回归测试才能完全安全。虽然在实践中,我无法猜测这可能会产生任何实际冲突,但在它引发错误之前你永远不会知道。否则,是的,这比使用粘贴的 .dll 进行填充要好。
        • @JECarterII 是有道理的,当然它可能会中断。但它也可能在复制本机库的情况下中断。从以下角度来看,这是一个相当棘手的变化:我们对变化没有完全的控制和愿景
        猜你喜欢
        • 2011-06-15
        • 1970-01-01
        • 2013-09-19
        • 2012-02-01
        • 2011-05-15
        • 1970-01-01
        • 1970-01-01
        • 2016-10-12
        相关资源
        最近更新 更多