在 java.library.path 上未找到基于 APR 的 Apache Tomcat Native 库,该库可在生产环境中提供最佳性能

s-n*_*n-2 4 java tomcat intellij-idea catalina server

当我调试 tomcat 时,浏览器启动但得到 404:

HTTP 状态 404 - /

类型 状态报告

信息 /

描述 请求的资源不可用。

阿帕奇汤姆猫/7.0.75

Tomcat Catalina 日志和服务器日志都有以下错误:

在 java.library.path 上找不到基于 APR 的 Apache Tomcat Native 库,该库可在生产环境中提供最佳性能:/Users/luowensheng/Library/Java/Extensions:/Library/Java/Extensions:/Network/Library/Java/扩展:/System/Library/Java/Extensions:/usr/lib/java:。

我搜索了一下,发现类似的帖子:

“未找到基于 APR 的 Apache Tomcat 本机库”是什么意思?

我的软件环境是:

Mac OS 
IntelliJ IDEA
Run Code Online (Sandbox Code Playgroud)

Gha*_*yel 5

HTTP 状态 404 - /

此错误是由于许多问题引起的,例如:

  1. 大多数情况下,由于路径无效而引发此错误。确保以下文件夹存在:
>  $cataline_home/webapps/your-project|
>                                         -->html,css,images, etc.                                       
>                                         -->WEB-INF|
>                                                    -->classes (your java files)
>                                                    -->lib     (your libraries)
Run Code Online (Sandbox Code Playgroud)
  1. 确保您的计算机上安装了 java。您可以通过简单地javac在命令提示符下运行或使用 java -version来检查它
  2. 您输入了错误的 URL 地址或不完整的 URL 或没有 tomcat 端口的 URL
  3. 还要确保您在 web.xml 文件中正确添加了类

在 MAC 中安装 Tomcat APR 在这里 ,对于 Linux,以下是我自己测试的

信息:在 java.library.path 上未找到基于 APR 的 Apache Tomcat Native 库,该库可在生产环境中提供最佳性能

安装APR的先决条件 APR 库 APR-util库 OpenSSL库

yum install openssl-devel
yum groupinstall "Development Tools"

mkdir tomcat-apr
cd tomcat-apr
wget http://www.us.apache.org/dist//apr/apr-1.5.2.tar.gz
tar -zxvf apr-1.5.2.tar.gz
cd apr-1.5.2
./configure
make
make install
Run Code Online (Sandbox Code Playgroud)

默认安装路径为/usr/local/apr

Download and Install APR-util                  
wget http://www.eu.apache.org/dist//apr/apr-util-1.5.4.tar.gz
tar -zxvf apr-util-1.5.4.tar.gz
cd apr-util-1.5.4
./configure --with-apr=/usr/local/apr
make
make install
Run Code Online (Sandbox Code Playgroud)

默认安装路径为 /usr/local/apr/lib 安装 Tomcat 使用的 APR 的 JNI Wrapper (libtcnative)

cd $CATALINA_HOME/bin
tar -zxvf tomcat-native.tar.gz
cd tomcat-native-1.1.29-src/jni/native
./configure --with-apr=/usr/local/apr --with-java-home=/var/java/jdk1.7.0_45
make
make install
Run Code Online (Sandbox Code Playgroud)

本机库安装在 /usr/local/apr/lib 中 将 APR 与 Tomcat 集成 有两种方法可以设置 Tomcat 与 APR 集成。

一种是启动Tomcat时可以在bin/catalina.sh中添加如下参数:CATALINA_OPTS="-Djava.library.path=/usr/local/apr/lib"

另一种是在/etc/profile中添加新的环境变量LD_LIBRARY_PATH:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/apr/lib
Run Code Online (Sandbox Code Playgroud)

然后通过以下方式使其生效:

source /etc/profile 
Run Code Online (Sandbox Code Playgroud)

重新启动Tomcat服务后,如果APR安装成功,我们可以在catalina.out日志中看到以下消息。

2015 年 10 月 7 日上午 8:08:54 org.apache.catalina.core.AprLifecycleListener init INFO:使用 APR 版本 1.5.2 加载基于 APR 的 Apache Tomcat Native 库 1.1.29。2015 年 10 月 7 日上午 8:08:54 org.apache.catalina.core.AprLifecycleListener init INFO:APR 功能:IPv6 [true]、sendfile [true]、接受过滤器 [false]、随机 [true]。