遇到好几次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,不然也不会有这篇帖子)
解决过程:
- 解决依赖环境,参照网上的帖子先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都已经装了好吧~~
- 解压tomcat/bin下面的tomcat-native.tar.gz,如下
tar -zxvf tomcat-native.tar.gz
别问我为什么参数非要用-zxvf,别的也可以,个人习惯而已。
- 解压好后,进入解压文件夹中的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
- 安装好后,系统还是找不到,可以做个软连接,如下
ln -s /usr/local/apr/lib/libtcnative-1.so /usr/lib64/libtcnative-1.so
- 启动成功。
Cento6.5启动Tomcat时报APR错的问题,布布扣,bubuko.com