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)文章
linux命令詳解date使用方法(計算母親節(jié)和父親節(jié)日期腳本示例)
date命令可以用來顯示和修改系統(tǒng)日期時間,本文對其做了詳細(xì)說明,最近提供計算指定年份的母親節(jié)和父親節(jié)的日期腳本示例,大家參考使用吧2013-12-12
Apache 支持CGI程序和SSI程序的設(shè)置方法
在這里,網(wǎng)頁教學(xué)網(wǎng)和大家探討如何修改服務(wù)器選項讓服務(wù)器能提供簡單的動態(tài)網(wǎng)頁內(nèi)容,也就是支持CGI程序及 Server-Side Include(SSI)程序。2009-10-10
VMware虛擬機安裝 CentOS 8 (1905)系統(tǒng)的教程圖解
這篇文章主要介紹了CentOS 8 (1905)系統(tǒng)安裝,本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下2019-09-09
linux如何為已存在的用戶創(chuàng)建home目錄
這篇文章主要介紹了linux如何為已存在的用戶創(chuàng)建home目錄問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-04-04

