问题描述

从apache官网下载64位tomcat7.0.90安装包文件解压到个人电脑D盘后,进入tomcat服务器的bin目录双击startup.bat windows批处理文件启动tomcat服务器时,出现闪退。

解决办法

关于tomcat服务器启动出现闪退的问题,网上已有关于解决此类问题的描述,大部分都是因为未配置JAVA_HOME, JRE_HOME和CATALINA_HOME等环境变量而引起的。关于如何配置 3个环境变量,很多关于解决tomcat服务器启动闪退的博客甚至百度经验上都有,此处就不赘述了。不懂的同学可以参考这篇博客

如何解决tomcat启动闪退问题

但是也有特殊情况,就是你配置了上述环境变量后再此启动tomcat服务器还出现闪退的Bug, 这个时候我们就需要查看日志找到问题产生的原因。进入tomcat根目录的log文件夹如下图所示:

找到最近产生的catalina.+日期.txt文件,使用nodepad++打开查看内容,并把日志信息粘贴如下

九月 09, 2018 1:52:31 上午 org.apache.catalina.core.AprLifecycleListener init

警告: The APR based Apache Tomcat Native library failed to load. The error reported was [D:\tomcat7.0\apache-tomcat-7.0.90\bin\tcnative-1.dll: Can't load AMD 64-bit .dll on a IA 32-bit platform]

java.lang.UnsatisfiedLinkError: D:\tomcat7.0\apache-tomcat-7.0.90\bin\tcnative-1.dll: Can't load AMD 64-bit .dll on a IA 32-bit platform

at java.lang.ClassLoader$NativeLibrary.load(Native Method)

at java.lang.ClassLoader.loadLibrary0(Unknown Source)

at java.lang.ClassLoader.loadLibrary(Unknown Source)

at java.lang.Runtime.loadLibrary0(Unknown Source)

at java.lang.System.loadLibrary(Unknown Source)

at org.apache.tomcat.jni.Library.<init>(Library.java:42)

at org.apache.tomcat.jni.Library.initialize(Library.java:178)

at org.apache.catalina.core.AprLifecycleListener.init(AprLifecycleListener.java:200)

at org.apache.catalina.core.AprLifecycleListener.isAprAvailable(AprLifecycleListener.java:108)

at org.apache.catalina.connector.Connector.setProtocol(Connector.java:592)

at org.apache.catalina.connector.Connector.<init>(Connector.java:66)

at org.apache.catalina.startup.ConnectorCreateRule.begin(ConnectorCreateRule.java:62)

at org.apache.tomcat.util.digester.Digester.startElement(Digester.java:1303)

at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(Unknown Source)

at com.sun.org.apache.xerces.internal.parsers.AbstractXMLDocumentParser.emptyElement(Unknown Source)

at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanStartElement(Unknown Source)

at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(Unknown Source)

at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(Unknown Source)

at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)

at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)

at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)

at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)

at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source)

at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)

at org.apache.tomcat.util.digester.Digester.parse(Digester.java:1576)

at org.apache.catalina.startup.Catalina.load(Catalina.java:628)

at org.apache.catalina.startup.Catalina.load(Catalina.java:679)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

at java.lang.reflect.Method.invoke(Unknown Source)

at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:253)

at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:427)

九月 09, 2018 1:52:32 上午 org.apache.catalina.startup.VersionLoggerListener log

信息: Server version: Apache Tomcat/7.0.90

九月 09, 2018 1:52:32 上午 org.apache.catalina.startup.VersionLoggerListener log

信息: Server built: Jul 2 2018 17:05:37 UTC

九月 09, 2018 1:52:32 上午 org.apache.catalina.startup.VersionLoggerListener log

信息: Server number: 7.0.90.0

九月 09, 2018 1:52:32 上午 org.apache.catalina.startup.VersionLoggerListener log

信息: OS Name: Windows 10

九月 09, 2018 1:52:32 上午 org.apache.catalina.startup.VersionLoggerListener log

信息: OS Version: 10.0

九月 09, 2018 1:52:32 上午 org.apache.catalina.startup.VersionLoggerListener log

信息: Architecture: x86

九月 09, 2018 1:52:32 上午 org.apache.catalina.startup.VersionLoggerListener log

信息: Java Home: C:\Program Files (x86)\Java\jre1.8.0_161

九月 09, 2018 1:52:32 上午 org.apache.catalina.startup.VersionLoggerListener log

信息: JVM Version: 1.8.0_161-b12

九月 09, 2018 1:52:32 上午 org.apache.catalina.startup.VersionLoggerListener log

信息: JVM Vendor: Oracle Corporation

九月 09, 2018 1:52:32 上午 org.apache.catalina.startup.VersionLoggerListener log

信息: CATALINA_BASE: D:\tomcat7.0\apache-tomcat-7.0.90

九月 09, 2018 1:52:32 上午 org.apache.catalina.startup.VersionLoggerListener log

信息: CATALINA_HOME: D:\tomcat7.0\apache-tomcat-7.0.90

九月 09, 2018 1:52:32 上午 org.apache.catalina.startup.VersionLoggerListener log

信息: Command line argument: -Djava.util.logging.config.file=D:\tomcat7.0\apache-tomcat-7.0.90\conf\logging.properties

九月 09, 2018 1:52:32 上午 org.apache.catalina.startup.VersionLoggerListener log

信息: Command line argument: -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager

九月 09, 2018 1:52:32 上午 org.apache.catalina.startup.VersionLoggerListener log

信息: Command line argument: -Djdk.tls.ephemeralDHKeySize=2048

九月 09, 2018 1:52:32 上午 org.apache.catalina.startup.VersionLoggerListener log

信息: Command line argument: -Dignore.endorsed.dirs=

九月 09, 2018 1:52:32 上午 org.apache.catalina.startup.VersionLoggerListener log

信息: Command line argument: -Dcatalina.base=D:\tomcat7.0\apache-tomcat-7.0.90

九月 09, 2018 1:52:32 上午 org.apache.catalina.startup.VersionLoggerListener log

信息: Command line argument: -Dcatalina.home=D:\tomcat7.0\apache-tomcat-7.0.90

九月 09, 2018 1:52:32 上午 org.apache.catalina.startup.VersionLoggerListener log

信息: Command line argument: -Djava.io.tmpdir=D:\tomcat7.0\apache-tomcat-7.0.90\temp

九月 09, 2018 1:52:32 上午 org.apache.coyote.AbstractProtocol init

信息: Initializing ProtocolHandler ["http-bio-8080"]

九月 09, 2018 1:52:32 上午 org.apache.coyote.AbstractProtocol init

严重: Failed to initialize end point associated with ProtocolHandler ["http-bio-8080"]

java.net.BindException: Address already in use: JVM_Bind <null>:8080

at org.apache.tomcat.util.net.JIoEndpoint.bind(JIoEndpoint.java:413)

at org.apache.tomcat.util.net.AbstractEndpoint.init(AbstractEndpoint.java:728)

at org.apache.coyote.AbstractProtocol.init(AbstractProtocol.java:452)

at org.apache.coyote.http11.AbstractHttp11JsseProtocol.init(AbstractHttp11JsseProtocol.java:119)

at org.apache.catalina.connector.Connector.initInternal(Connector.java:978)

at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)

at org.apache.catalina.core.StandardService.initInternal(StandardService.java:560)

at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)

at org.apache.catalina.core.StandardServer.initInternal(StandardServer.java:840)

at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)

at org.apache.catalina.startup.Catalina.load(Catalina.java:654)

at org.apache.catalina.startup.Catalina.load(Catalina.java:679)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

at java.lang.reflect.Method.invoke(Unknown Source)

at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:253)

at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:427)

Caused by: java.net.BindException: Address already in use: JVM_Bind

at java.net.DualStackPlainSocketImpl.bind0(Native Method)

at java.net.DualStackPlainSocketImpl.socketBind(Unknown Source)

at java.net.AbstractPlainSocketImpl.bind(Unknown Source)

at java.net.PlainSocketImpl.bind(Unknown Source)

at java.net.ServerSocket.bind(Unknown Source)

at java.net.ServerSocket.<init>(Unknown Source)

at java.net.ServerSocket.<init>(Unknown Source)

at org.apache.tomcat.util.net.DefaultServerSocketFactory.createSocket(DefaultServerSocketFactory.java:49)

at org.apache.tomcat.util.net.JIoEndpoint.bind(JIoEndpoint.java:400)

... 17 more

通过查看以上日志信息,我们发现这个bug主要由两处错误引起,第一处错误:

The APR based Apache Tomcat Native library failed to load. The error reported was [D:\tomcat7.0\apache-tomcat-7.0.90\bin\tcnative-1.dll: Can't load AMD 64-bit .dll on a IA 32-bit platform]

java.lang.UnsatisfiedLinkError: D:\tomcat7.0\apache-tomcat-7.0.90\bin\tcnative-1.dll: Can't load AMD 64-bit .dll on a IA 32-bit platform

原来是因为我的jdk平台是32位的,而tomcat7.0却是64位的,导致tomcat启动过程中加载native library失败。通过最开始的dos控制台信息我们发现tomcat启动时用到了jre,而我的环境变量配置的jre路径却是32位的(C:\Program Files (x86)目录下的安装软件都属于32bit位的软件)。原来的jdk和jre环境变量配置如下图所示

将jdk和jre的环境变量值加入到path值中,原来已配置好(如下图,本人采用的是win 10系统)

因此我的解决办法是安装64bit位的jdk,然后重新配置jdk和jre环境变量即可,配置后的jdk和jre环境变量如下图所示:

然后我们再来看第二处错误: java.net.BindException: Address already in use: JVM_Bind <null>:8080

这说明8080端口已被占用,这是由于我之前安装过32位的tomcat8.0并启动成功过导致的,这个问题我们可以通过tomcat\conf目录下的server.xml服务器的配置文件修改启动端口号来解决,tomcat服务器启动时默认的连接端口号是8080,现在我们把它改为8088就不会出现端口被占用的冲突了

<Connector port="8088" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

重启电脑后进入tomcat\bin目录,双击startup.bat文件不再出现闪退,并显示tomcat服务器启动成功,如下图所示。

进入浏览器输入http://localhost:8088并回车,进入如下界面说明tomcat服务器确实启动成功,问题到此得以解决

解决tomcat7安装后启动时一闪而退的bug相关推荐

  1. BlueStacks蓝叠 安装后启动时:初始化失败或者引擎启动失败

    我们安装好BlueStacks蓝叠 后启动时,提示: 但是我们打开控制面板-->程序管理-->启用或关闭WINDOWS功能中,发现此功能本来就是关闭状态或者关闭了也不行, 那么我们就没办法 ...

  2. PyCharm安装后启动时APPCRASH问题的解决

    第一次装好Pycharm后,双击图标,弹出"停止工作"提示框: 打开"查看问题详细信息",内容如下: 问题签名: 问题事件名称: APPCRASH 应用程序名: ...

  3. python下载之后无法启动_安装后启动时,适用于Python的Eric IDE崩溃

    On Windows 7 I successfully installed Python 3.73 and then installed Eric 6, the Python IDE. 安装似乎已成功 ...

  4. 永洪Desktop安装后启动提示缺少libv8_libbase.dll文件解决办法

    A:安装后启动产品时出现图中报错 2. 解决办法 下载对应的dll文件,将其放入对应的目录中 D:\Yonghong desktop\YonghongBI\Yonghong\vooltdb\bin 附 ...

  5. phpstudy mysql端口_完美解决phpstudy安装后mysql无法启动(无需删除原数据库,无需更改任何配置,无需更改端口)直接共存...

    今天学习php,当然是要先安装好运行环境了,phpstyudy是一个运行php的集成环境, 一键安装对新手很友好,与时作为一个新手,便跟着教程安装了phpstudy集成环境. 很快安装好了,嗯.对新手 ...

  6. mysql删除端口配置文件_完美解决phpstudy安装后mysql无法启动(无需删除原数据库,无需更改任何配置,无需更改端口)直接共存...

    今天学习php,当然是要先安装好运行环境了,phpstyudy是一个运行php的集成环境, 一键安装对新手很友好,与时作为一个新手,便跟着教程安装了phpstudy集成环境. 很快安装好了,嗯.对新手 ...

  7. Android应用启动时白色闪屏原因及解决办法

    白色闪屏现象: 如果OnCreate().onStart().onResume()中操作太多,耗时较久.那么就会在主界面显示出来之前出现白色闪屏.为了更清晰的看出白色闪屏,这里在代码中执行50000次 ...

  8. Linux 下安装Ubuntu20.04 启动花屏的解决方法(安装和启动时设置 quite splash nomodeset即可解决)

    Linux 下安装Ubuntu20.04 启动花屏的解决方法(安装和启动时设置 quite splash nomodeset即可解决) 问题:正常安装Ubuntu 20后开机花屏,卡住不动.这是因为u ...

  9. 安装Jenkins后 启动时失败的问题解决

    安装Jenkins后 启动时失败的问题解决 参考文章: (1)安装Jenkins后 启动时失败的问题解决 (2)https://www.cnblogs.com/playboysnow/p/540820 ...

最新文章

  1. linux free命令详解和使用实例(查看内存使用率)
  2. 最常用的20个Git命令与示例,你都会了么?
  3. ubuntu安装mysql可视化工具MySQL-workbench及简单操作
  4. oracle中字符串的脚本表示什么意思,sql脚本中rem与prompt,define等的含义
  5. jsp页面点击显示影藏div的一个方法
  6. 第二周进度及工作量统计
  7. 经常和电脑、信息化设备打交道,食品保健养生非常重要!
  8. C#中IQueryable和IEnumberable的区别
  9. NodeJs 实现 WebSocket 即时通讯(简单版)
  10. Android【报错】. lang。android.app ClassCastException。SharedPreferencesImpl不能被强制转换为android.content.Shared
  11. ustc FreeBSD / rust 镜像源
  12. oracle 脚本定时,Oracle定时任务备份脚本
  13. 传统模式下安装linux,在将引导顺序更改为传统模式或在传统模式下安装操作系统时找不到引导设备...
  14. ComboBox 智能过滤,模糊匹配,拼音首字母匹配
  15. 监控工具Prometheus服务在K8s上异常
  16. 优化算法(四)——粒子群优化算法(PSO)
  17. Windows 本地账户
  18. 微信小程序如何获取地理位置、地图显示,逆地址解析。
  19. 容联云聚客SCRM如何破SCRM保险应用困局
  20. 如何解决hao.123.com的挟持网页(篡改网站主页)

热门文章

  1. 时间字符串和时间戳的转换
  2. JEECG社区微信小程序开发实战-张代浩-专题视频课程
  3. 什么是软件模块化,为什么要模块化?
  4. Moodle专题网站链接
  5. Docker--网络模式
  6. Android 上传代码到gitee并发布到Jitpack生成远程库
  7. 最新微信三级分销系统源码 分销商城搭建 含完整代码包和安装部署教程
  8. 双向绑定原理(个人理解)
  9. C语言(void *)用法实例
  10. vs好用吗?vs2022下载。