RHEL-9部署Tomcat9+Java21时缺失jni_md.h文件报错求助
解决RHEL 9上Java 21部署Tomcat 9时的jni_md.h缺失报错
问题分析
报错核心原因有两点:
- JAVA_HOME被错误指向了
/bin,而非Java 21的实际安装根目录 - Java 21的头文件目录结构与旧版Java不同,Tomcat 9的原生组件构建脚本未自动适配
报错原文:
checking JAVA_HOME... /bin
adding "-I/bin/include" to TCNATIVE_PRIV_INCLUDES
checking for JDK os include directory... Cannot find jni_md.h in /bin/
configure: error: You should retry --with-os-type=SUBDIR
解决步骤
1. 修正JAVA_HOME环境变量
先定位Java 21的正确安装路径:
update-alternatives --list java
输出示例为/usr/lib/jvm/java-21-openjdk-21.0.2.0.13-2.el9.x86_64/bin/java,去掉末尾的/bin/java即为JAVA_HOME的正确路径,执行以下命令设置环境变量:
export JAVA_HOME=/usr/lib/jvm/java-21-openjdk-21.0.2.0.13-2.el9.x86_64 export PATH=$JAVA_HOME/bin:$PATH
2. 安装Java 21开发包
jni_md.h属于JDK开发包内容,确保已安装对应组件:
dnf install java-21-openjdk-devel
如果使用Oracle JDK,需确认安装的是完整JDK版本而非仅JRE。
3. 手动指定OS类型构建Tomcat Native
Java 21中jni_md.h位于$JAVA_HOME/include/linux,Tomcat 9的configure脚本无法自动识别,需手动指定OS类型:
./configure --with-java-home=$JAVA_HOME --with-os-type=linux
完成配置后执行make && make install完成构建。
内容的提问来源于stack exchange,提问作者Alphonse Mboumba
相关产品推荐
相关产品推荐

