今天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/