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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 02:47:08