当前位置: 首页 > 编程笔记 >

environments was not found on the java.library.path 问题的解决方法

东郭宏朗
2023-03-14
本文向大家介绍environments was not found on the java.library.path 问题的解决方法,包括了environments was not found on the java.library.path 问题的解决方法的使用技巧和注意事项,需要的朋友参考一下

Tomcat 启动出现信息如下:

信息: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path:XXXX

出现原因分析:

Tomcat建议使用apache的apr,来更好的运行Tomcat;

apache的apr 的介绍

APR(Apache portable Run-time libraries,Apache可移植运行库)的目的如其名称一样,主要为上层的应用程序提供一个可以跨越多操作系统平台使用的底层支持接口库。在早期 的Apache版本中,应用程序本身必须能够处理各种具体操作系统平台的细节,并针对不同的平台调用不同的处理函数。

随着Apache的进一步开发,Apache组织决定将这些通用的函数独立出来并发展成为一个新的项目。这样,APR的开发就从Apache中独立出来,Apache仅仅是使用 APR而已。

APR使得平台细节的处理进行下移。对于应用程序而言,它们根本就不需要考虑具体的平台,不管是Unix、Linux还是Window,应用程序执行的接口基本都是统一一致的。因此对于APR而言,可移植性和统一的上层接口是其考虑的一个重点。而APR最早的目的并不是如此,它最早只是希望将Apache中用到的所有代码合并为一个通用的代码库,然而这不是一个正确的策略,因此后来APR改变了其目标。有的时候使用公共代码并不是一件好事,比如如何将一个请求映射到线程或者进程是平台相关的,因此仅仅一个公共的代码库并不能完成这种区分。APR的目标则是希望安全合并所有的能够合并的代码而不需要牺牲性能

APR的最早的一个目标就是为所有的平台(不是部分)提供一个公共的统一操作函数接口,这是一个非常了不起的目的,当然也是不现实的一个目标。我们不可能支持所有平台的所有特征,因此APR目前只能为大多数平台提供所有的APR特性支持,包括Win32、OS/2、BeOS、Darwin、Linux等等。为了能够实现这个目标,APR开发者必须为那些不能运行于所有平台的特性创建了一系列的特征宏(FEATURE MACROS)以在各个平台之间区分这些特征。这些特征宏定义非常简单,通常用APR_HAS_FEATURE参数设置:

如果某个平台具有这个特性,则该宏必须设置为true,比如Linux和window都具有内存映射文件,同时APR提供了内存映射文件的操作接口,因此在这两个平台上,APR_HAS_MMAP宏必须设置,同时ap_mmap_*函数应该将磁盘文件映射为内存并返回适当的状态码。如果你的操作系统并不支持内存映射,那么APR_HAS_MMAP必须设置为0,而且所有的ap_mmap_*函数也可以不需要定义。第二步就是对于那些在程序中使用了不支持的函数必须提出警告。

解决方法一:

下载与你Tomcat对应版本的 tcnative-1.dll,放到apache-tomcat-7.0.57\bin 目录下,重启html" target="_blank">tomcat。

下载地址:http://archive.apache.org/dist/tomcat/tomcat-connectors/native/

如果你不清楚版本,你随便下载一个版本,放进目录里面,在重启tomcat 的时候,会有提示你合适的 tcnative-1.dll 版本。

1、

2.

3.

4.

解决方法二、

这是一个APR的问题,因为Tomcat需要依赖APR来优化性能,就需要安装APR

1、首先安装APR,采用源码安装的方式,默认安装在:/usr/local/apr

wget http://mirrors.cnnic.cn/apache//apr/apr-1.5.2.tar.gz
tar -zxvf apr-1.5.0.tar.gz
cd apr-1.5.0
./configure
make
make install

2、接下来安装Tomcat-native,这个gz包在Tomcat的bin目录下面已经存在了,直接解压tomcat-native;

进入目录:cd   tomcat-native-1.2.7-src/native,然后编译安装:

./configure --with-apr=/usr/local/apr  --with-java-home="/usr/lib/jvm/java-1.7.0" --with-ssl=yes

如果下载的Tomcat版本较新的话,编译安装会出现OpenSSL版本不一致的问题,无法安装,如下错误:

checking OpenSSL library version >= 1.0.2... configure: error: Your version of OpenSSL is not compatible with this version of tcnative

这事就需要下载一个版本低一点的Tomcat-native包:

wget http://mirrors.hust.edu.cn/apache/tomcat/tomcat-connectors/native/1.1.34/source/tomcat-native-1.1.34-src.tar.gz

上面的gz包下载下来之后,放到Tomcat的bin目录下去,解压,进入目录:cd  tomcat-native-1.1.20-src/jni/native,再编译安装

3、编译安装成功之后,在Tomcat的bin目录下,新建一个名为setenv.sh的文件

新建文件中加入内容:

LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$CATALINA_HOME/lib
         export LD_LIBRARY_PATH
4、经过上述三步,第一个问退可以解决;

 类似资料:
  • 我们已经探索了 Python 语言中的许多部分,现在我们将通过设计并编写一款程序来了解如何把这些部分组合到一起。这些程序一定是能做到一些有用的事情。这其中的方法就是去学习如何靠你自己来编写一份 Python 脚本。 问题 我们希望解决的问题如下: 我想要一款程序来备份我所有的重要文件。 虽然这是一个简单的问题,但是其中并没有足够的信息有助于让我们开始规划一份解决方案。我们需要进行一些分析(Anal

  • 不太会使用 Env 工具的请先看一遍 《Env 用户手册》(不长的,看完费不了几分钟) 提示 Env 工具和 源码 所处的目录都不能有中文或空格请先检查!! code 是一个命令 点 ‘.’ 是一个参数表示当前目录,中间有一个空格。 romfs ramfs 文件系统中的文件名和c的变量的命名一样,只能由英文字母开头且仅包含数字和下划线。 修改 qemu.bat 里面的参数时,要注意那是一行参数中间

  • 本文向大家介绍python八皇后问题的解决方法,包括了python八皇后问题的解决方法的使用技巧和注意事项,需要的朋友参考一下 本文为大家分享了python八皇后问题的解决方法,供大家参考,具体内容如下 题目: 给定一个 N*N 正方形棋盘,在上面放置 N个棋子,又叫皇后,使每两个棋子都不在同一条横线上、竖线上、斜线上。一般我们都讨论8皇后,但是只要N > 4,都会存在解的。 分析: 方法1:根据

  • 本文向大家介绍浅谈Android解决65535问题的方法,包括了浅谈Android解决65535问题的方法的使用技巧和注意事项,需要的朋友参考一下 Error:Error converting bytecode to dex: Cause: com.android.dex.DexIndexOverflowException: Cannot merge new index 66125 into a

  • 本文向大家介绍Nginx中worker connections问题的解决方法,包括了Nginx中worker connections问题的解决方法的使用技巧和注意事项,需要的朋友参考一下 查看日志,有一个[warn]: 3660#0: 20000 worker_connections are more than open file resource limit: 1024 !! 原来安装好ngin

  • 本文向大家介绍解决Python出现_warn_unsafe_extraction问题的方法,包括了解决Python出现_warn_unsafe_extraction问题的方法的使用技巧和注意事项,需要的朋友参考一下 在Python项目中运行出现了“AttributeError: ResourceManager instance has no attribute ‘_warn_unsafe_extr

  • 本文向大家介绍php关闭warning问题的解决方法,包括了php关闭warning问题的解决方法的使用技巧和注意事项,需要的朋友参考一下 error_reporting 设定错误讯息回报的等级 2047我记得应该是E_ALL。 php.ini 文件中有许多配置设置。您应当已经设置好自己的php.ini 文件并把它放在合适的目录中,就像在 Linux 上安装PHP 和 Apache 2 的文档说明

  • 10.10. 公共问题的解决方案 10.10.1. 对一个特定的 DataSource 使用错误的事务管理器 开发者需要按照需求仔细地选择正确的 PlatformTransactionManager 实现。理解Spring的事务抽象如何与JTA全局事务一起工作是非常重要的。使用得当,就不会有任何冲突:Spring仅仅提供一个直观的、可移植的抽象层。 如果你使用全局事务,你 必须 为你的所有事务操作