environments was not found on the java.library.path 問(wèn)題的解決方法
Tomcat 啟動(dòng)出現(xiàn)信息如下:
信息: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path:XXXX
出現(xiàn)原因分析:
Tomcat建議使用apache的apr,來(lái)更好的運(yùn)行Tomcat;
apache的apr 的介紹
APR(Apache portable Run-time libraries,Apache可移植運(yùn)行庫(kù))的目的如其名稱一樣,主要為上層的應(yīng)用程序提供一個(gè)可以跨越多操作系統(tǒng)平臺(tái)使用的底層支持接口庫(kù)。在早期 的Apache版本中,應(yīng)用程序本身必須能夠處理各種具體操作系統(tǒng)平臺(tái)的細(xì)節(jié),并針對(duì)不同的平臺(tái)調(diào)用不同的處理函數(shù)。
隨著Apache的進(jìn)一步開發(fā),Apache組織決定將這些通用的函數(shù)獨(dú)立出來(lái)并發(fā)展成為一個(gè)新的項(xiàng)目。這樣,APR的開發(fā)就從Apache中獨(dú)立出來(lái),Apache僅僅是使用 APR而已。
APR使得平臺(tái)細(xì)節(jié)的處理進(jìn)行下移。對(duì)于應(yīng)用程序而言,它們根本就不需要考慮具體的平臺(tái),不管是Unix、Linux還是Window,應(yīng)用程序執(zhí)行的接口基本都是統(tǒng)一一致的。因此對(duì)于APR而言,可移植性和統(tǒng)一的上層接口是其考慮的一個(gè)重點(diǎn)。而APR最早的目的并不是如此,它最早只是希望將Apache中用到的所有代碼合并為一個(gè)通用的代碼庫(kù),然而這不是一個(gè)正確的策略,因此后來(lái)APR改變了其目標(biāo)。有的時(shí)候使用公共代碼并不是一件好事,比如如何將一個(gè)請(qǐng)求映射到線程或者進(jìn)程是平臺(tái)相關(guān)的,因此僅僅一個(gè)公共的代碼庫(kù)并不能完成這種區(qū)分。APR的目標(biāo)則是希望安全合并所有的能夠合并的代碼而不需要犧牲性能。
APR的最早的一個(gè)目標(biāo)就是為所有的平臺(tái)(不是部分)提供一個(gè)公共的統(tǒng)一操作函數(shù)接口,這是一個(gè)非常了不起的目的,當(dāng)然也是不現(xiàn)實(shí)的一個(gè)目標(biāo)。我們不可能支持所有平臺(tái)的所有特征,因此APR目前只能為大多數(shù)平臺(tái)提供所有的APR特性支持,包括Win32、OS/2、BeOS、Darwin、Linux等等。為了能夠?qū)崿F(xiàn)這個(gè)目標(biāo),APR開發(fā)者必須為那些不能運(yùn)行于所有平臺(tái)的特性創(chuàng)建了一系列的特征宏(FEATURE MACROS)以在各個(gè)平臺(tái)之間區(qū)分這些特征。這些特征宏定義非常簡(jiǎn)單,通常用APR_HAS_FEATURE參數(shù)設(shè)置:
如果某個(gè)平臺(tái)具有這個(gè)特性,則該宏必須設(shè)置為true,比如Linux和window都具有內(nèi)存映射文件,同時(shí)APR提供了內(nèi)存映射文件的操作接口,因此在這兩個(gè)平臺(tái)上,APR_HAS_MMAP宏必須設(shè)置,同時(shí)ap_mmap_*函數(shù)應(yīng)該將磁盤文件映射為內(nèi)存并返回適當(dāng)?shù)臓顟B(tài)碼。如果你的操作系統(tǒng)并不支持內(nèi)存映射,那么APR_HAS_MMAP必須設(shè)置為0,而且所有的ap_mmap_*函數(shù)也可以不需要定義。第二步就是對(duì)于那些在程序中使用了不支持的函數(shù)必須提出警告。
解決方法一:
下載與你Tomcat對(duì)應(yīng)版本的 tcnative-1.dll,放到apache-tomcat-7.0.57\bin 目錄下,重啟tomcat。
下載地址:http://archive.apache.org/dist/tomcat/tomcat-connectors/native/
如果你不清楚版本,你隨便下載一個(gè)版本,放進(jìn)目錄里面,在重啟tomcat 的時(shí)候,會(huì)有提示你合適的 tcnative-1.dll 版本。
1、

2.

3.

4.

解決方法二、
這是一個(gè)APR的問(wèn)題,因?yàn)門omcat需要依賴APR來(lái)優(yōu)化性能,就需要安裝APR
1、首先安裝APR,采用源碼安裝的方式,默認(rèn)安裝在:/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、接下來(lái)安裝Tomcat-native,這個(gè)gz包在Tomcat的bin目錄下面已經(jīng)存在了,直接解壓tomcat-native;
進(jìn)入目錄: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版本較新的話,編譯安裝會(huì)出現(xiàn)OpenSSL版本不一致的問(wèn)題,無(wú)法安裝,如下錯(cuò)誤:
checking OpenSSL library version >= 1.0.2... configure: error: Your version of OpenSSL is not compatible with this version of tcnative
這事就需要下載一個(gè)版本低一點(diǎn)的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包下載下來(lái)之后,放到Tomcat的bin目錄下去,解壓,進(jìn)入目錄:cd tomcat-native-1.1.20-src/jni/native,再編譯安裝
3、編譯安裝成功之后,在Tomcat的bin目錄下,新建一個(gè)名為setenv.sh的文件
新建文件中加入內(nèi)容:
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$CATALINA_HOME/lib
export LD_LIBRARY_PATH
4、經(jīng)過(guò)上述三步,第一個(gè)問(wèn)退可以解決;
相關(guān)文章
linux命令詳解date使用方法(計(jì)算母親節(jié)和父親節(jié)日期腳本示例)
date命令可以用來(lái)顯示和修改系統(tǒng)日期時(shí)間,本文對(duì)其做了詳細(xì)說(shuō)明,最近提供計(jì)算指定年份的母親節(jié)和父親節(jié)的日期腳本示例,大家參考使用吧2013-12-12
Apache 支持CGI程序和SSI程序的設(shè)置方法
在這里,網(wǎng)頁(yè)教學(xué)網(wǎng)和大家探討如何修改服務(wù)器選項(xiàng)讓服務(wù)器能提供簡(jiǎn)單的動(dòng)態(tài)網(wǎng)頁(yè)內(nèi)容,也就是支持CGI程序及 Server-Side Include(SSI)程序。2009-10-10
Linux系統(tǒng)下如何實(shí)現(xiàn)修改主機(jī)名
這篇文章主要介紹了Linux系統(tǒng)下如何實(shí)現(xiàn)修改主機(jī)名問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02
VMware虛擬機(jī)安裝 CentOS 8 (1905)系統(tǒng)的教程圖解
這篇文章主要介紹了CentOS 8 (1905)系統(tǒng)安裝,本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-09-09
Linux如何實(shí)現(xiàn)給/根目錄擴(kuò)容
這篇文章主要介紹了Linux如何實(shí)現(xiàn)給/根目錄擴(kuò)容問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-04-04
linux如何為已存在的用戶創(chuàng)建home目錄
這篇文章主要介紹了linux如何為已存在的用戶創(chuàng)建home目錄問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-04-04

