浅谈Tomcat乱码与端口占用的解决方案
tomcat 服务器是一个免费的开放源代码的 web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试 jsp 程序的首选。但是有些小伙伴在启动tomcat时也会遇到各种各样的问题,比如tomcat的startup.bat启动后出现乱码,端口占用,启动后闪退等问题,这里我们来一一进行解决
问题一:tomcat的startup.bat启动后出现乱码
找到tomcat文件下的conf目录,修改logging.properties文件中java.util.logging.consolehandler.encoding对应的值为gbk
重启tomcat,你看到的启动页面是这样的话,说明乱码问题已经解决
问题二:一闪而退之端口占用
启动tomcat出现一闪而退的现象,其实还是可以看到tomcat终端输出的日志,这时你需要迅速截图捕获异常,太南了。
最正确的方法是查看日志,找到tomcat目录下的logs目录中catalina当天的日志,我这里找到的是c:\develop\tomcat\apache-tomcat-8.5.47\logs\catalina.2019-10-17.log
,在日志中可以看到类似这样的输出,address already in use: bind
说明是端口占用了
17-oct-2019 11:14:30.521 严重 [main] org.apache.catalina.core.standardservice.initinternal failed to initialize connector [connector[http/1.1-8080]] org.apache.catalina.lifecycleexception: protocol handler initialization failed at org.apache.catalina.connector.connector.initinternal(connector.java:995) at org.apache.catalina.util.lifecyclebase.init(lifecyclebase.java:136) at org.apache.catalina.core.standardservice.initinternal(standardservice.java:552) at org.apache.catalina.util.lifecyclebase.init(lifecyclebase.java:136) at org.apache.catalina.core.standardserver.initinternal(standardserver.java:848) at org.apache.catalina.util.lifecyclebase.init(lifecyclebase.java:136) at org.apache.catalina.startup.catalina.load(catalina.java:639) at org.apache.catalina.startup.catalina.load(catalina.java:662) at sun.reflect.nativemethodaccessorimpl.invoke0(native method) at sun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl.java:62) at sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl.java:43) at java.lang.reflect.method.invoke(method.java:498) at org.apache.catalina.startup.bootstrap.load(bootstrap.java:309) at org.apache.catalina.startup.bootstrap.main(bootstrap.java:492) caused by: java.net.bindexception: address already in use: bind at sun.nio.ch.net.bind0(native method) at sun.nio.ch.net.bind(net.java:433) at sun.nio.ch.net.bind(net.java:425) at sun.nio.ch.serversocketchannelimpl.bind(serversocketchannelimpl.java:223) at sun.nio.ch.serversocketadaptor.bind(serversocketadaptor.java:74) at org.apache.tomcat.util.net.nioendpoint.bind(nioendpoint.java:219) at org.apache.tomcat.util.net.abstractendpoint.init(abstractendpoint.java:1118) at org.apache.tomcat.util.net.abstractjsseendpoint.init(abstractjsseendpoint.java:224) at org.apache.coyote.abstractprotocol.init(abstractprotocol.java:581) at org.apache.coyote.http11.abstracthttp11protocol.init(abstracthttp11protocol.java:68) at org.apache.catalina.connector.connector.initinternal(connector.java:993) ... 13 more
在tomcat目录找到conf目录中的server.xml配置文件,在connector标签中修改tomcat启动端口
<connector port="9080" protocol="http/1.1" connectiontimeout="20000" redirectport="8443" />
问题三:非端口问题的一闪而退
启动tomcat直接一闪而退,在logs目录的日志里面找不到错误信息,这个时候很大可能是因为tomcat与jdk版本不对应导致的,有可能你的tomcat是tomcat9版,而你的jdk是1.7版本的,tomcat与jdk版本对应关系可以参考这篇文章tomcat与jdk版本对应关系,tomcat各版本特性
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
上一篇: python如何在非创建全局变量的地方使用全局变量
下一篇: PHP运算符问题