首页 > 代码库 > Cento6.5启动Tomcat时报APR错的问题

Cento6.5启动Tomcat时报APR错的问题

遇到好几次tomcat报这咯APR错的问题,网上也有不少帖子说到这个问题,但是没有一个帖子是完全顺着来能直接解决自己的问题的,这里结合自己的环境和尝试总结一下这个问题的解决过程。


操作系统版本:Centos 6.5 x86_x64

Tomcat版本:7.0.47.0

JDK版本:1.7.0_51-b13 64位(甲骨文的太阳的jdk,不是openjdk)


启动时报错如下

The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: /usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib

原因基本就是因为在tomcat的server.xml配置启用了apr模式,但是tomcat找不到

  <!--APR library loader. Documentation at /docs/apr.html -->
  <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />

究竟什么是APR,其实不需要理解也可以解决这个报错,这里可以大致理解为tomcat用来提升性能的一个东东。如果非要想知道这是个什么东西,可以去查资料了解一下bio/nio,基本可以理解为nio比bio好,但是tomcat使用apr比nio在提升性能方面更牛x(不要问为什么,一般情况下,配置复杂的都比较牛x,不然也不会有这篇帖子)

解决过程:

  1. 解决依赖环境,参照网上的帖子先yum一波流装好apr,apr-devel,gcc。没有openssl的话也yum之,最好连openssl-devel一块yum吧。我装好了openssl和openssl-devel,但启动tomcat有严重警告

    Failed to initialize the SSLEngine. org.apache.tomcat.jni.Error: 70023: This function has not been implemented on this platform

    查了许多帖子才知道,如果你的网站不支持ssl,就在tomcat的配置文件server.xml里把apr的ssl关掉吧

    <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="off" />

    啥?还要装jdk?tomcat都装了一般jdk都已经装了好吧~~

  2. 解压tomcat/bin下面的tomcat-native.tar.gz,如下

    tar -zxvf tomcat-native.tar.gz

    别问我为什么参数非要用-zxvf,别的也可以,个人习惯而已。

  3. 解压好后,进入解压文件夹中的native文件夹,tomcat-native-1.1.29-src/jni/native,然后敲命令config

    ./configure --with-apr=/usr/bin/apr-1-config

    在这一步,有帖子说configure后面要跟参数--with-apr=/usr/local/apr --with-java-home=/usr/local/java,不过我这里找不到/usr/local/apr,java的home也不是这个,只能找到/usr/bin/apr-1-config,只有亲自试了才知道。而且我没装c编译依赖包,报错如下,

    checking for C compiler default output file name... configure: error: C compiler cannot create executables
    See `config.log‘ for more details.

    总之要yum一下gcc依赖包(前面已提到,yum过了就不用再yum了)完事了,make安装吧


    make && makmake install
  4. 安装好后,系统还是找不到,可以做个软连接,如下

    ln -s /usr/local/apr/lib/libtcnative-1.so /usr/lib64/libtcnative-1.so
  5. 启动成功。