当前位置: 首页 > news >正文

针对tomcat [/usr/lib64:/lib64:/lib:/usr/lib]上找不到基于APR的Apache Tomcat本机库的处理方法

问题描述:

org.apache.catalina.core.AprLifecycleListener.lifecycleEvent 在java.library.path:[/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib]上找不到基于APR的Apache Tomcat本机库,该库允许在生产环境中获得最佳性能

环境centos7

解决方法:

一.需要下载Tomcat Native

地址:https://tomcat.apache.org/download-native.cgi

1.1 Source Distributions

Source Distributions(源码发行版)是‌包含源代码的包‌,需自行编译后才能使用;

1.2 Binary Distributions

Binary Distributions(二进制发行版)是‌已编译好的可直接运行的包‌,无需额外编译步骤。

二. 具体操作

2.1 下载源码版本

下载tar.gz

2.2 前置安装条件

只介绍通过下载离线安装包的方式进行安装(直接安装较为简单可自行查阅资料)

前置条件为apr-devel,openssl-devel

下面离线下载命令会自行下载相关依赖安装包

2.2.1 下载包和相关依赖(如果服务器已经有的依赖不下载)

yum install --downloadonly --downloaddir=/usr/local/RPM apr-devel

yum install --downloadonly --downloaddir=/usr/local/RPM openssl-devel

2.2.2 下载包和相关依赖(包和所有依赖都下载)

yumdownloader --destdir /usr/local/RPM2 --resolve apr-devel
yumdownloader --destdir /usr/local/RPM2 --resolve openssl-devel

2.2.3 安装

验证是否已经安装过

ls -ls /usr/bin/openssl(已安装)

ls -ls /usr/bin/apr-1-config (未安装)

安装需要的安装包

yum localinstall /usr/local/RPM2/*.rpm

rpm -qa | grep apr(查询)

2.2.4 编译tomcat-native

前置条件:

查询服务器jdk路径

(1)echo $JAVA_HOME 

若输出为空或报错,则说明未配置;若显示路径(如/usr/lib/jvm/java-11-openjdk),则已配置

如果未配置$JAVA_HOME则可通过以下命令查找JDK路径:

which java
ls -lrt /usr/bin/java
ls -lrt /etc/alternatives/java
readlink -f $(which java)

这些命令会返回Java可执行文件的真实路径(如/usr/lib/jvm/java-11-openjdk-amd64/bin/java),其父目录即为JAVA_HOME候选值

输入$JAVA_HOME/bin/java -version

(2)开始配置编译环境

cd tomcat-native-2.0.9-src/native/

运行 ./configure \
  --with-apr=/usr/bin/apr-1-config \
  --with-java-home=/usr/jdk1.8.0_261 \
  --with-ssl=yes

如果出现报错:

configure: error: Found APR 1.4.8. You need version 1.7.0 or newer installed.

当前系统APR版本为1.4.8,而Tomcat Native 2.0.9要求至少1.7.0版本。版本太低导致

(3)升级APR

下载地址

https://apr.apache.org/download.cgi

输入:tar zxvf apr-1.7.6.tar.gz 解压

cd tar zxvf apr-1.7.6

./configure --prefix=/usr/local/source_code/apr 

****命令组成解析*****

  • ./configure
    源代码编译的配置脚本,用于检测系统环境(如编译器、依赖库等)并生成适配当前系统的Makefile。

  • --prefix=/usr/local/source_code/apr
    关键安装路径参数,指定软件所有文件的安装根目录为/usr/local/source_code/apr。效果包括:

    • 二进制文件安装到/usr/local/source_code/apr/bin

    • 库文件安装到/usr/local/source_code/apr/lib

    • 头文件安装到/usr/local/source_code/apr/include

结合之前编译APR和Tomcat Native的经历:

  • 该命令用于将新版APR 1.7.0安装到独立目录,避免覆盖系统默认的旧版APR 1.4.8。

  • 后续编译Tomcat Native时,需通过--with-apr=/usr/local/apr/bin/apr-1-config引用此路径。

路径选择的注意事项

路径类型

典型用途

用户案例中的意义

/usr/local/apr

自定义安装的软件

集中管理手动编译的APR组件

/usr

系统包管理器安装的软件

原有旧版APR的默认位置

继续编译发现openssl版本也低,但是升级的话可能会导致其他变动,最后决定降Tomcat Native版本为1.2.14

https://archive.apache.org/dist/tomcat/tomcat-connectors/native/1.2.12/source/

运行:

./configure \
  --with-apr=/usr/local/source_code/apr/bin/apr-1-config \
  --with-java-home=/usr/jdk1.8.0_261 \
  --with-ssl=/usr/include/openssl

成功如图

编译:make && make install

验证:ls /usr/local/apr/lib

拷贝:

cp /usr/local/apr/lib/libtcnative-1.so /usr/lib/

启动tomcat

成功


文章转载自:

http://Dy6Uq5KT.wpspf.cn
http://gW8tUTiS.wpspf.cn
http://atZTeJWW.wpspf.cn
http://YcOBAc7t.wpspf.cn
http://cXxCclgW.wpspf.cn
http://euMIRbw8.wpspf.cn
http://CFawvpmw.wpspf.cn
http://fd9VXkNB.wpspf.cn
http://WUfpPV2y.wpspf.cn
http://qcVj24hc.wpspf.cn
http://h2B33UVJ.wpspf.cn
http://E3GFTuPb.wpspf.cn
http://K61hX1dW.wpspf.cn
http://y91ftJ6x.wpspf.cn
http://v4yb5DzN.wpspf.cn
http://8tBKE4jA.wpspf.cn
http://LT7wumIv.wpspf.cn
http://y11xezk0.wpspf.cn
http://3W6ck8eV.wpspf.cn
http://Dz83vCGW.wpspf.cn
http://LQGz1jf0.wpspf.cn
http://9OxSCjC0.wpspf.cn
http://m1Okc8Ue.wpspf.cn
http://Fo67eUGl.wpspf.cn
http://V1m85aUA.wpspf.cn
http://DKY2lM0R.wpspf.cn
http://yq49Pimp.wpspf.cn
http://RMOpnaNJ.wpspf.cn
http://opGW19Ie.wpspf.cn
http://E63My9pX.wpspf.cn
http://www.dtcms.com/a/387894.html

相关文章:

  • 【js】js实现日期转大写:
  • 番茄时钟小程序版本更新记录(v1.0)
  • css消除图片下的白边
  • 我是如何在electron里安装shadcn ui框架的
  • 【图像理解进阶】如何对猫猫的图片进行细粒度分类?
  • JSCPC/GDCPC 2025 J.Puzzle Competition(解谜游戏)
  • SpringMVC 系列博客(三):进阶功能与 SSM 整合实战
  • 电商网站反爬虫机制详解及应对策略
  • 没了CDN与PCDN,网络会怎样?
  • C++中std::vector Vs std::deque VS std::list对比详解
  • RecyclerView实现流式布局
  • 【连载5】C# MVC 异常处理避坑指南:异步操作与静态资源错误解决方案
  • 当控制器无法上网时,如何利用windows笔记本与控制器共享网络?
  • 企业数字化视角下的项目管理软件市场全景分析(2025版)
  • Python异步编程:asyncio.create_task() 用法解析
  • java面试Day1 | redis缓存穿透、击穿、雪崩、持久化、双写一致性、数据过期策略、数据淘汰策略、分布式锁、redis集群
  • Jenkins运维之路(容器项目的优化)
  • 【精品资料鉴赏】363页智慧旅游大数据平台项目建设设计方案
  • 软考 系统架构设计师系列知识点之杂项集萃(149)
  • MyBatis 中注解操作与 XML 映射文件操作的对比
  • 复杂 PDF 文档如何高效解析?
  • 加密网络流量分类
  • leetcode算法题记录:
  • VS安装后通过vswhere.exe查询显示的 installationVersion数字怎么不是2022?
  • 光伏电站安全 “守护神”:QB800 绝缘监测平台,为清洁能源高效运行筑固防线
  • STC携手非小号 Talking Web3,海上ALPHA WEB3派对启航
  • AR技术突破:极端环境下设备的创新与应用
  • R---------split()` 函数
  • 和为K的子数组-前缀和+哈希
  • ITSM产品推荐:甄知科技燕千云与主流方案对比分析