checking for JDK os include directory... Cannot find jni_md.h in /usr/lib/jvm/jre-1.8.0-openjdk 解决方法

本文主要是介绍checking for JDK os include directory... Cannot find jni_md.h in /usr/lib/jvm/jre-1.8.0-openjdk 解决方法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 背景

近日,在给tomcat安装ssl证书时,碰到了一个问题。主要就是安装下面的的插件时,碰到的。

#编译环境 ubuntu18.04.6_x64
#编译apr-lib
cd ~/Downloads
wget http://apache.mirror.anlx.net/apr/apr-1.7.0.tar.gz
tar -zxvf apr-1.7.0.tar.gz
cd apr-1.7.0
./configure --prefix=$(pwd)/out
make -j4
make install

#安装openssl
sudo apt install openssl libssl-dev

cd ~/Downloads
wget https://dlcdn.apache.org/tomcat/tomcat-connectors/native/1.2.31/source/tomcat-native-1.2.31-src.tar.gz
tar -zxvf  tomcat-native-1.2.31-src.tar.gz
cd tomcat-native-1.2.31-src/native
#此处--with-apr替换为上边编译的apr-lib的绝对路径
./configure --prefix=$(pwd)/out --with-apr=/home/ubuntu/Downloads/apr-1.7.0/out  --with-ssl=yes
make -j4
make install

#复制out目录下的文件到tomcat的bin目录下,重启即可在log中看到apr相关了
原网址:解决ubuntu下“找不到基于APR的Apache Tomcat本机库” - 一年- - 博客园#####原因: 缺少apr相关lib,编译一份放到tomcat的bin目录下即可,当然不放也可以正常用。 先放一份编译好的 点此下载 #编译环境 ubuntu18.04.6_x64 #编译apr-lhttps://www.cnblogs.com/srczhang/p/15450570.html

执行apr-lib中的命令正常运行。在安装openssl的时候,出现了下面的日志:

checking for JDK os include directory... Cannot find jni_md.h in /usr/lib/jvm/jre-1.8.0-openjdk/

上面是截取的部分日志

 在网络搜了好久,没有找到。

解决方案

于是,自己动手找。给出的提示是“在这个include目录中,没有找到jni_md.h文件”,于是,

到“ /usr/lib/jvm/“目录下寻找include目录,确实不存在。

在linux下,使用find命令也没有查找到。在自己的开发机器上有这个目录,但是服务器上没有。

于是,回想自己是如何在服务区上安装的jdk,利用的yum这种方式,比较节省时间。

也在网上,看到这样安装是安装的简易版,就是安装的文件比较少。

解决步骤:

服务器上现在需要include这个目录下的文件,那么只能是给它这个目录了。

那就只能用比较笨的方法:

到官网上下载jdk,并上传到服务器上。安装。

并确认,这次安装有include目录。

官网下载jdk时,需要登录,没有用户的需要注册一下。

将下载下来的jdk安装时,是使用tar的命令

 tar -xzvf jdk-8u241-linux-x64.tar.gz(使用了此命令)成功安装

下载jdk,并安装借助了下面的博文

Linux上安装JDK1.8 - chy_18883701161 - 博客园以CentOS为例。 切换到root账户 检查是否已安装过jdk yum list --installed|grep jdk 或者java -version看下能不能执行。 如果已安装过但jdk版本不https://www.cnblogs.com/chy18883701161/p/12354039.html

这个是在安装ssl证书的一个小插曲。tomcat的运行,需要jdk的内容要根据需要安装啊。

小插曲:

在解决问题时,发现yum安装的jdk1.8内容少。于是,利用yum安装jdk1.6,并查看是否会多一些目录;安装后,依然没有发现include这个目录

这篇关于checking for JDK os include directory... Cannot find jni_md.h in /usr/lib/jvm/jre-1.8.0-openjdk 解决方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/320289

相关文章

JVM 的类初始化机制

前言 当你在 Java 程序中new对象时,有没有考虑过 JVM 是如何把静态的字节码(byte code)转化为运行时对象的呢,这个问题看似简单,但清楚的同学相信也不会太多,这篇文章首先介绍 JVM 类初始化的机制,然后给出几个易出错的实例来分析,帮助大家更好理解这个知识点。 JVM 将字节码转化为运行时对象分为三个阶段,分别是:loading 、Linking、initialization

Spring Security 基于表达式的权限控制

前言 spring security 3.0已经可以使用spring el表达式来控制授权,允许在表达式中使用复杂的布尔逻辑来控制访问的权限。 常见的表达式 Spring Security可用表达式对象的基类是SecurityExpressionRoot。 表达式描述hasRole([role])用户拥有制定的角色时返回true (Spring security默认会带有ROLE_前缀),去

浅析Spring Security认证过程

类图 为了方便理解Spring Security认证流程,特意画了如下的类图,包含相关的核心认证类 概述 核心验证器 AuthenticationManager 该对象提供了认证方法的入口,接收一个Authentiaton对象作为参数; public interface AuthenticationManager {Authentication authenticate(Authenti

Spring Security--Architecture Overview

1 核心组件 这一节主要介绍一些在Spring Security中常见且核心的Java类,它们之间的依赖,构建起了整个框架。想要理解整个架构,最起码得对这些类眼熟。 1.1 SecurityContextHolder SecurityContextHolder用于存储安全上下文(security context)的信息。当前操作的用户是谁,该用户是否已经被认证,他拥有哪些角色权限…这些都被保

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

Java架构师知识体认识

源码分析 常用设计模式 Proxy代理模式Factory工厂模式Singleton单例模式Delegate委派模式Strategy策略模式Prototype原型模式Template模板模式 Spring5 beans 接口实例化代理Bean操作 Context Ioc容器设计原理及高级特性Aop设计原理Factorybean与Beanfactory Transaction 声明式事物

Java进阶13讲__第12讲_1/2

多线程、线程池 1.  线程概念 1.1  什么是线程 1.2  线程的好处 2.   创建线程的三种方式 注意事项 2.1  继承Thread类 2.1.1 认识  2.1.2  编码实现  package cn.hdc.oop10.Thread;import org.slf4j.Logger;import org.slf4j.LoggerFactory

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟 开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚 第一站:海量资源,应有尽有 走进“智听

【C++】_list常用方法解析及模拟实现

相信自己的力量,只要对自己始终保持信心,尽自己最大努力去完成任何事,就算事情最终结果是失败了,努力了也不留遗憾。💓💓💓 目录   ✨说在前面 🍋知识点一:什么是list? •🌰1.list的定义 •🌰2.list的基本特性 •🌰3.常用接口介绍 🍋知识点二:list常用接口 •🌰1.默认成员函数 🔥构造函数(⭐) 🔥析构函数 •🌰2.list对象