You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

openSUSE Leap 42.3上Spring Boot内嵌Tomcat启动APR库版本不兼容问题求解

解决openSUSE Leap 42.3上Spring Boot 2.0.0.M6内嵌Tomcat的APR版本不兼容问题

嘿,我来帮你搞定这个报错!先给你理清楚问题根源,再给你两个靠谱的修复方案。

为啥会出这个错?

你看到的这个incompatible version [1.1.34] of the APR based Apache Tomcat Native library错误,核心是系统里装的APR(Apache Portable Runtime)原生库版本太老了。Spring Boot 2.0.0.M6内嵌的是Tomcat 8.5.x系列,这个版本的Tomcat要求APR原生库至少得是1.2.10版本,而你的openSUSE Leap 42.3自带的1.1.34版本根本达不到要求,所以启动时就炸了。

两种修复方案任你选

方案一:升级系统的APR库

这是最彻底的解决办法,直接把老版本的APR换成兼容的版本。用openSUSE的zypper包管理器就能搞定:

  1. 先刷新一下包源,确保能拿到最新的包信息:
sudo zypper refresh
  1. 安装最新的APR相关包(包括开发包和Tomcat原生库):
sudo zypper install libapr1 libapr1-devel tomcat-native

装完之后重启你的Spring Boot应用,再看日志,这个兼容性错误应该就消失了。如果想确认APR是否正常加载,日志里会出现类似Loaded APR based Apache Tomcat Native library [xxx] using APR version [xxx]的提示。

方案二:禁用APR,改用Tomcat默认的NIO模式

要是升级APR遇到麻烦(比如官方源里没有更高版本的包),那咱就绕开APR,直接让Tomcat用默认的NIO模式,操作也很简单,有两种方式:

方式1:启动时加JVM参数

在启动应用的命令里加上这个参数,强制指定用NIO协议:

-Dserver.tomcat.protocol=NIO

比如你的启动命令可能是这样的:

java -Dserver.tomcat.protocol=NIO -jar your-spring-boot-app.jar

方式2:在配置文件里设置

打开你的application.properties或者application.yml,加一行配置就行:

  • 如果你用的是properties格式:
server.tomcat.protocol=NIO
  • 如果你用的是yml格式:
server:
  tomcat:
    protocol: NIO

这样配置后,Tomcat启动时就会跳过APR库的加载,直接用NIO模式,自然就不会有版本不兼容的问题了。

验证修复效果

重启应用后,检查日志,如果那个APR版本不兼容的错误没再出现,就说明修复成功啦!

内容的提问来源于stack exchange,提问作者alexanoid

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 03:32:02