今天tomcat 從7升級到8之後,一直啓動不了,提示:
vironments was not found on the java.library.path: /usr/local/apr/lib:/home/tomcat/lib
找了很久原因,都沒找到,找了網上,基本上都是這樣的答案。
1.jdk和tomcat是否匹配
2.是否項目有問題
3.是否tomcat 安裝有問題
但是排查了很久,都沒問題啊,tomcat是新裝的,感覺不會出現這種問題啊,於是重新安裝,還是這個問題。
我已經想死了。。。。。。
於是,我從其它服務器裏面下載個server.xml,發現
居然成功了!!!!!!!!
後來我對比了server.xml 終於找到問題啦,哈哈哈哈哈哈哈哈。
主要原因是
我直接把原來tomcat7(舊)裏面的server.xml複製到了tomcat8(新)的conf目錄下。(建議後都不要亂複製東西,要仔細弄懂裏面的每個配置,認真臉!!)舊的server.xml 裏面,是採用apr的方式
protocol="org.apache.coyote.http11.Http11AprProtocol"
而新的tomcat裏面server.xml是採用nio的方式
protocol="org.apache.coyote.http11.Http11NioProtocol"
因爲apr的方式必須要配置apr 和 native,而新tomcat8的server.xml配置裏面,沒有這兩個jar包,所以是啓動不成功的。
如要要用apr的方式,一定要先配置好native,否則就用nio的方式,直接即可
<Connector port="80" protocol="org.apache.coyote.http11.Http11NioProtocol" connectionTimeout="20000" URIEncoding="UTF-8" useBodyEncodingForURI="true" enableLookups="false" redirectPort="8443" />
線上的服務器一般都是用apr配置方式,因爲能更好地提高性能和提高IO能力。
關於nio 和 apr 的區別,可參考
http://tomcat.apache.org/tomcat-8.0-doc/apr.html
http://love-love-l.blog.163.com/blog/static/21078304201311564236996/