environments was not found on the java.library.path 問題的解決方法
Tomcat 啟動出現(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,來更好的運行Tomcat;
apache的apr 的介紹
APR(Apache portable Run-time libraries,Apache可移植運行庫)的目的如其名稱一樣,主要為上層的應(yīng)用程序提供一個可以跨越多操作系統(tǒng)平臺使用的底層支持接口庫。在早期 的Apache版本中,應(yīng)用程序本身必須能夠處理各種具體操作系統(tǒng)平臺的細(xì)節(jié),并針對不同的平臺調(diào)用不同的處理函數(shù)。
隨著Apache的進(jìn)一步開發(fā),Apache組織決定將這些通用的函數(shù)獨立出來并發(fā)展成為一個新的項目。這樣,APR的開發(fā)就從Apache中獨立出來,Apache僅僅是使用 APR而已。
APR使得平臺細(xì)節(jié)的處理進(jìn)行下移。對于應(yīng)用程序而言,它們根本就不需要考慮具體的平臺,不管是Unix、Linux還是Window,應(yīng)用程序執(zhí)行的接口基本都是統(tǒng)一一致的。因此對于APR而言,可移植性和統(tǒng)一的上層接口是其考慮的一個重點。而APR最早的目的并不是如此,它最早只是希望將Apache中用到的所有代碼合并為一個通用的代碼庫,然而這不是一個正確的策略,因此后來APR改變了其目標(biāo)。有的時候使用公共代碼并不是一件好事,比如如何將一個請求映射到線程或者進(jìn)程是平臺相關(guān)的,因此僅僅一個公共的代碼庫并不能完成這種區(qū)分。APR的目標(biāo)則是希望安全合并所有的能夠合并的代碼而不需要犧牲性能。
APR的最早的一個目標(biāo)就是為所有的平臺(不是部分)提供一個公共的統(tǒng)一操作函數(shù)接口,這是一個非常了不起的目的,當(dāng)然也是不現(xiàn)實的一個目標(biāo)。我們不可能支持所有平臺的所有特征,因此APR目前只能為大多數(shù)平臺提供所有的APR特性支持,包括Win32、OS/2、BeOS、Darwin、Linux等等。為了能夠?qū)崿F(xiàn)這個目標(biāo),APR開發(fā)者必須為那些不能運行于所有平臺的特性創(chuàng)建了一系列的特征宏(FEATURE MACROS)以在各個平臺之間區(qū)分這些特征。這些特征宏定義非常簡單,通常用APR_HAS_FEATURE參數(shù)設(shè)置:
如果某個平臺具有這個特性,則該宏必須設(shè)置為true,比如Linux和window都具有內(nèi)存映射文件,同時APR提供了內(nèi)存映射文件的操作接口,因此在這兩個平臺上,APR_HAS_MMAP宏必須設(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ù)也可以不需要定義。第二步就是對于那些在程序中使用了不支持的函數(shù)必須提出警告。
解決方法一:
下載與你Tomcat對應(yīng)版本的 tcnative-1.dll,放到apache-tomcat-7.0.57\bin 目錄下,重啟tomcat。
下載地址:http://archive.apache.org/dist/tomcat/tomcat-connectors/native/
如果你不清楚版本,你隨便下載一個版本,放進(jìn)目錄里面,在重啟tomcat 的時候,會有提示你合適的 tcnative-1.dll 版本。
1、
2.
3.
4.
解決方法二、
這是一個APR的問題,因為Tomcat需要依賴APR來優(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、接下來安裝Tomcat-native,這個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版本較新的話,編譯安裝會出現(xiàn)OpenSSL版本不一致的問題,無法安裝,如下錯誤:
checking OpenSSL library version >= 1.0.2... configure: error: Your version of OpenSSL is not compatible with this version of tcnative
這事就需要下載一個版本低一點的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包下載下來之后,放到Tomcat的bin目錄下去,解壓,進(jìn)入目錄:cd tomcat-native-1.1.20-src/jni/native,再編譯安裝
3、編譯安裝成功之后,在Tomcat的bin目錄下,新建一個名為setenv.sh的文件
新建文件中加入內(nèi)容:
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$CATALINA_HOME/lib
export LD_LIBRARY_PATH
4、經(jīng)過上述三步,第一個問退可以解決;
相關(guān)文章
CentOS 6.4系統(tǒng)下編譯安裝LNMP和配置PHP環(huán)境具體步驟
下面介紹的是CentOS 6.4系統(tǒng)下編譯安裝LNMP和配置PHP環(huán)境具體步驟,感興趣的朋友可以參考下,希望對你配置php環(huán)境有所幫助2013-05-05ubuntu開啟SSH服務(wù)遠(yuǎn)程登錄操作的實現(xiàn)
這篇文章主要介紹了ubuntu開啟SSH服務(wù)遠(yuǎn)程登錄操作的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08linux把一個文件的內(nèi)容復(fù)制到另一個文件的末尾
這篇文章主要介紹了linux把一個文件的內(nèi)容復(fù)制到另一個文件的末尾,文中給大家提到了linux 把文件末尾輸出到另一個文件的方法,需要的朋友可以參考下2019-08-08Xshell遠(yuǎn)程連接linux詳細(xì)步驟(小白必備)
本文主要介紹了Xshell遠(yuǎn)程連接linux詳細(xì)步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08