The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path:...tomcat可以整合本地apr,在处理静态资源的时候速度更快,总而言之就是使用本地的apr库提升处理效率。在网上一查,很多人提到了这个问题,解决这个问题其实很简单,但window和linux处理方法不太一样。下面就分别给出解决方法。
window平台
在window下启动的时候会提示was not found on the java.library.path: C:Toolsjdk1.6.0_29bin;C:WINDOWSSunJavabin;C:WINDOWSsystem32;C:WINDOWS …,这个根据每个人的环境不同,可能给出的路径也不太一样,只要把Native library拷贝到上述路径之一即可,Native library是什么呢,网上有提供下载,其实不要那么麻烦,在tomcat的bin目录下就有,文件名是:tcnative-1.dll。例如我把这个文件拷贝到C:Toolsjdk1.6.0_29bin下,然后再启动tomcat就没有上述的提示了。
linux平台
linux下比较复杂一点,因为tomcat包中没有提供编译好的so文件,所以需要自己编译,tomcat发行版中提供了源码,文件为tomcat的bin/tomcat-native.tar.gz,另外编译时候需要依赖APR 1.2、OpenSSL,如果机器上没有安装,可以使用 yum -y install apr-devel openssl-devel 来进行安装。解压tomcat-native.tar.gz后会得到一个tomcat-native-1.1.20-src的目录,Native library的源文件位于tomcat-native-1.1.20-src/jni/native下,进入该目录,执行./configure,可能会看到configure: error: APR could not be located. Please use the –with-apr option.的错误提示,这个时候用–with-apr制定一下apr的位置即可,我使用的是
./configure --with-apr=/usr/bin/apr-1-config,顺利通过,然后执行 make && make install 编译就算搞定,此时应该可以在/usr/local/apr/lib/下看到一个名为 libtcnative-1.so 的文件,拷贝该文件到tomcat启动时提示的任何一个路径即可。
另一方法
上面介绍了如果在window和linux下解决这个问题。最近使用mac os,也遇到了同样的问题,解决的办法和linux下相似,唯一不同的是在configure时需要指定java home
自己编译首要条件介绍已经安装了gcc,关于如果安装gcc,可以参考:mac os lion 安装gcc备忘,依赖的库似乎默认系统自带了,如果编译的时候提示缺少库,可以使用 port 方式来安装,顺便提一下 port 是一个和centos下的yum、ubuntu下的apt-get类似的包管理软件。我使用的configure参数设置如下:
./configure --with-apr=/usr/bin/apr-1-config --with-java-home=/System/Library/Frameworks/JavaVM.framework/ --with-os-type=Headers/然后使用make、make install就编译完成。如果成功,在目录/usr/local/apr/lib/下会生成一个名为libtcnative-1.0.dylib的库文件,使用ln命令做一个软链接到上述警告信息中提到的一个目录即可,例如:
ln -s /usr/local/apr/lib/libtcnative-1.dylib /Library/Java/Extensions/