Tomcat无法启动问题排查
tomcat常见的错误与解决方案小结
tomcat常见的错误与解决⽅案⼩结⼀、tomcat启动时错误问题1:The JAVA_HOME environment variable is not defined This environment variable is needed to run this program;解决:没有在tomcat的配置⽂件.bash_profile中设置环境变量JAVA_HOME,具体设置⽅法为:加⼊如下⼏⾏:JAVA_HOME=/home/tomcat/j2sdk1.4.2_08(具体值要以实际的jdk安装路径为准)export JAVA_HOMECLASSPATH=/home/tomcat/j2sdk1.4.2_08/lib/tools.jar:/home/tomcat/j2sdk1.4.2_08/lib/dt.jarexport CLASSPATH问题2:Error occurred during initialization of VM Could not reserve enough space for object heap解决:在tomcat的bin⽬录下,catalina.sh⽂件的tomcat内存参数配置过⼤,超过机器可⽤内存总数造成,修改到适当的值即可,修改的参数为:JAVA_OPTS="-Xms50m -Xmx60m"问题3:tomcat启动时报某个⽬录没有权限,启动失败,或者不能执⾏某些jsp页解决:tomcat需要tomcat⽤户具有⼀些⽬录和⽂件的相应权限, 所有⽬录应该具有读写执⾏(浏览)的权限,jsp,class⽂件应该最少具有读权限, ⼀些⽂件需要写权限,下⾯是已知的需要读写权限⽂件的列表:$CATALINA_HOME/logs下所有⽂件$CATALINA_HOME/work下所有⽂件$CATALINA_HOME/publish/main/count.txt⽂件$CATALINA_HOME/publish/chatroom/resource下的所有.xml⽂件所有上传图⽚⽬录都需要写权限。
tomcat启动不了的原因
Tomcat启动不了的原因(实用收藏+更新)
如果在控制面板-“管理工具”-“服务”中启动Tomcat时,提示“本地计算机上的Apache Tomcat 服务启动后又停止了。一些服务自动停止,如果他们没什么可做的,例如“性能日志和警报”服务”,使得Tomcat启动不起来的可能的原因是:
1。由于在tomcat里JVM没有配好,他默认的是批向c:\program file\Java下的那一个,如果你确认这没有删掉,JVM指向你自己安装的jdk\jre试试。
我以前在学校里也常常碰到这些问题,当时一般是重新安装tomcat.
后来慢慢得开始找问题了,发现其实还真就是上面所说的几点启动不了,后来我发现是第2点出的错.
幸亏我以前对server.xml备份过,只要换回原来的server.xml就行了.
至于原因,我还要进行分析.因为当时是做虚拟主机才对这个配置文件进行过修改的.
检查错误的方法我也看过一些,就写下来吧.
一是查看log文件,这个是每个维护人员必须养成的习惯,
二是查看端口占用,我是用fport看的,一个单文件程序,很方便实用.
三是运行命令行:"tomcat6.exe run",不过要cmd中在"D:\projects\software\Tomcat 6.0\bin"下运行,查看错误.
环境变量的话一般重新查看过就行了.
还有就是版本匹配问题,这个可以随便搜下,很多的配置方案都会写出java版本与tomcat版本.对应就行了.
2。改写server.xml文件出错,如果改写出错也会导致服务启动不起来。 3。设置的网络端口被占用,如IIS; 4。Tomcat和JDK版本对应问题,tomcat 5.0以上的版本,jdk也必须是1.5以上。 5。环境变量配置错误。
手动启动tomcat,配置了环境变量依旧无法启动解决办法
手动启动tomcat,配置了环境变量依旧无法启动解决办法在明明已经安装了JDK并设置好了JAVA_HOME,可偏偏Tomcat 在启动过程中找不到。
报错信息如下:Neither the JAVA_HOME nor the JRE_HOME environment variable is defined At least one of these environment variable is needed to run this program;提示找不到java_home各jre_home路径,何解?原因不知道了,下面来看解决办法:1、分析startup.bat启动脚本:发现其调用了catalina.bat,而catalina.bat调用了setclasspath.bat2、在setclasspath.bat的头部定义了JAVA_HOME和JRE_HOME的值,那么在这里手动设置JAVA_HOME变量rem ---------------------------------------------------------------------------rem Set CLASSPATH and Java optionsremrem $Id: setclasspath.bat 505241 2007-02-09 10:22:58Z jfclere $rem ---------------------------------------------------------------------------rem 在你自己的setclasspath.bat添加下面两句话rem----------------------------------------------------------------set JAVA_HOME=C:\Program Files\Java\jdk1.5.0_05(最后改成你自己的jdk名字)set JRE_HOME=C:\Program Files\Java\jre1.5.0_05(jre名字)rem-----------------------------------------------------------------rem Make sure prerequisite environment variables are setif not "%JAVA_HOME%" == "" goto gotJdkHomeif not "%JRE_HOME%" == "" goto gotJreHomeecho Neither the JAVA_HOME nor the JRE_HOME environment variable is definedecho At least one of these environment variable is needed to run this program。
tomcat的配置问题-HTTPStatus404问题解决方法(转)
tomcat的配置问题-HTTPStatus404问题解决方法(转)tomcat的配置问题-HTTP Status 404 问题解决方法(1)今天刚开始编写东西就出现了错误HTTP Status 404 - /MyServlet--------------------------------------------------------------------------------type Status reportmessage /MyServletdescription The requested resource (/MyServlet) is not available.刚开始以为是myeclipse设置的tomcat的问题在myeclipse里面可以运行tomcat并且可以运行http://localhost:8080测试成功http://localhost:8080/的下一级目录却不能够打开出现了上面的错误我在网上查到好多资料说是1.在web.xml中加入下段:registration/GreetingServlet然后用http://localhost:8080/greeting/GreetingServlet就可以访问了2.web.xml中这样registrationGreetingServletregistration/servlet/GreetingServlet等很多这么说的 web.xml的问题可是我改了好多次都不行后来我想可能是tomcat 的问题我在tomcat的webapps/root目录下新建了个网页测试可以在webapps下新建的文件夹的网页却不可以,出现了上面的错误可以确定是tomcat的问题,而不是网页映射的问题我查倒了下面的资料。
--------------------------------------------------作为一个初学JSP和Servlet的人来说,最难恐怕是服务器的配置这一关。
tomcat7.0镜像版无法启动问题
关于镜像tomcat7.0无法启动问题及端口的
更改
镜像版的tomcat7.0安装后第一次也就是安装那次可以启动,但是以后就不能启动了(至少我的是这样的),下面我就两个方面的问题提出解决方法。
希望能给需要的人提供帮助。
一般来说会出现这样的问题,在开始中打开tomcat后会出现拒绝访问。
出现这样的问题,有两种一般障碍:
一是端口被占用,需要更改端口。
具体方法是在tomcat的安装目录下的conf文件夹中
server.xml用记事本或者能编辑的软件打开,内容如下:
橙色部分的port就是端口号,我已将把它改为8888,默认是8080.修改后保存就行了。
这样端口就更改了。
二是要提供管理员身份,具体做法是
右键tomcat7.0.exe,选择属性——兼容性并选择以兼容模式运行和以管理员身份运行。
然后应用。
退出后在打开即可。
tomcat正常运行一段时间后,突然访问不了项目了
tomcat正常运⾏⼀段时间后,突然访问不了项⽬了前⾔我将项⽬部署在tomcat服务器上,本来都是好好的,输⼊⽹站地址就能访问;但是第⼆天⼀早去就会发现⽹站访问提⽰404,⽂件⽆法找到;我就很懵了。
排查1、我是⽤的是chrome浏览器,所以尝试了下其余浏览器看是否能够访问;以外的发现IE竟然可以访问。
说明问题不在代码2、找到tomcat的安装⽬录,查看错误⽇志;在logs⽂件夹下即可找到类似 catalina.2019-09-22.log 的⽂件打开⽂件夹后就看到了报错信息:3、然后靠万能的百度就分分钟解决了报错信息:22-Sep-2019 18:15:22.184 INFO [http-nio-8080-exec-7] org.apache.coyote.http11.Http11Processor.service Error parsing HTTP request headerNote: further occurrences of HTTP header parsing errors will be logged at DEBUG level.ng.IllegalArgumentException: Invalid character found in method name. HTTP method names must be tokensat org.apache.coyote.http11.Http11InputBuffer.parseRequestLine(Http11InputBuffer.java:426)at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:687)at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:790)at .NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1459)at .SocketProcessorBase.run(SocketProcessorBase.java:49)at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)at ng.Thread.run(Thread.java:748)解决⽅法:在Tomcat的server.xml中找到<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443"/>这个标签,添加maxHttpHeaderSize="9999"这⼀属性。
解析Tomcat的启动脚本--startup.bat
解析Tomcat的启动脚本--startup.bat 概述我们通常使⽤ Tomcat 中的 startup.bat 来启动 Tomcat. 但是这其中⼲了⼀些什么事呢?⼤家都知道⼀个 Java 程序需要启动的话, 肯定需要 main ⽅法, 那么这个 main ⽅法在哪呢?Tomcat 脚本中⼜是配置了⼀些什么参数呢, 什么情况下 Tomcat 会启动失败呢?带着⼀些列的疑问我们来分析 Tomcat 的三个最重要的启动脚本:startup.batcatalina.batsetclasspath.batstartup.bat 脚本该脚本主要做了以下⼏件事:设置 CATALINA_HOME 环境变量的值找到 catalina.bat 脚本调⽤ catalina.bat 脚本, 并把参数传过去贴出简化版本的 startup.bat 脚本的内容@echo offrem 执⾏这个命令之后, 增加或者改动的环境变量只限于匹配到 endlocal 命令或者到达⽂件末尾.setlocalrem 假设 CATALINA_HOME 环境变量没有定义rem 取当前⽬录的路径值, 赋给 CURRENT_DIR 变量, 就是 ./apache-tomcat-x.x.xx/binset "CURRENT_DIR=%cd%"rem 如果 CATALINA_HOME 变量值不是 "" 的话, 调到 gotHome 标签处if not "%CATALINA_HOME%" == "" goto gotHomerem 如果 CATALINA_HOME 是 "" 的话, 设置 CATALINA_HOME 变量值为当前⽬录的路径值(./apache-tomcat-x.x.xx/bin) set "CATALINA_HOME=%CURRENT_DIR%"rem 判断当前路径下的是否有 bin\catalina.bat, 也就是 ./apache-tomcat-x.x.xx/bin/bin/catalina.batrem 如果存在的话, 直接调到 okHome 标签处, 显然是不存在的if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHomerem 不存在的话, CATALINA_HOME 取上级⽬录的值, 也就是(./apache-tomcat-x.x.xx/)cd ..set "CATALINA_HOME=%cd%"rem 进⼊ CURRENT_DIR(./apache-tomcat-x.x.xx/bin)cd "%CURRENT_DIR%":gotHomerem 通过上⾯的设置, CATALINA_HOME 的值已经是: ./apache-tomcat-x.x.xx/rem 所以整理是可以找到 catalina.bat 脚本的, 直接调到 okHome 标签处if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHomeecho The CATALINA_HOME environment variable is not defined correctlyecho This environment variable is needed to run this programgoto end:okHomerem 设置 EXECUTABLE 变量指向为 catalina.bat 脚本set "EXECUTABLE=%CATALINA_HOME%\bin\catalina.bat"rem 检查⽬标可执⾏⽂件(catalina.bat)是否存在, 通常情况下是存在的, 直接调到 okExec 标签处rem 如果不存在的话, 直接退出. 启动 Tomcat 结束if exist "%EXECUTABLE%" goto okExececho Cannot find "%EXECUTABLE%"echo This file is needed to run this programgoto end:okExecrem 获取剩余的没有⽤ shift 取出来的命令⾏参数, 并保存它们在 CMD_LINE_ARGSset CMD_LINE_ARGS=:setArgsrem 如果第⼀个命令⾏参数是空的话, 跳到 doneSetArgs 标签处rem "%1" : 表⽰执⾏命令之后的第⼀个参数if ""%1""=="""" goto doneSetArgsrem 第⼀个参数不是空的话, 拼接到 CMD_LINE_ARGS 变量set CMD_LINE_ARGS=%CMD_LINE_ARGS% %1rem 这个命令可以⾃⾏百度shiftgoto setArgs:doneSetArgsrem 上⾯设置了 EXECUTABLE 变量的值是指向了 catalina.bat 脚本, 这个利⽤ call 命令执⾏调⽤, 并把参数传进去rem 接下来, 咱们看 catalina.bat 脚本的内容rem 完整的命令: ./apache-tomcat-x.x.xx/bin/catalina.bat startcall "%EXECUTABLE%" start %CMD_LINE_ARGS%:end要想理解脚本中的⼀些命令, ⾸先来了解⼀下常⽤的命令(我们⽤的 Window 版的)rem : 该命令后的代码不会被执⾏, 相当于注释@echo off : 关闭命令的显⽰, 如果没有设置, 执⾏了哪些命令都会显⽰出来echo : 输出后⾯的内容setlocal : 执⾏这个命令之后, 增加或者改动的环境变量的作⽤范围只限于匹配到 endlocal 命令或者到达⽂件末尾.set : 设置⼀个变量:xxx : 定义⼀个标签goto : 跳转到制定的标签处call : 执⾏命令我们来⼀⾏⾏分析 startup.bat 脚本set "CURRENT_DIR=%cd%"%cd% : 表⽰⽂件所在的⽬录的路径如果我们解压的 Tomcat 所在的⽬录为 D:/apache-tomcat-x.x.x/ . 因为 startup.bat 命令在 bin ⽬录下, 所以此时 %cd% 表⽰的⽬录是 D:/apache-tomcat-x.x.x/binif not "%CATALINA_HOME%" == "" goto gotHome我们通常情况下不会配置 CATALINA_HOME 这个环境变量的, 所以这⾥不会调到 gotHome 标签处.set "CATALINA_HOME=%CURRENT_DIR%"直接把当前⽬录假设为 CATALINA_HOME 的值if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome然后通过固定的格式来判断⼀下是否有 catalina.bat 脚本, 当然这⾥是肯定不会存在的, 因为 CATALINA_HOME = D:/apache-tomcat-x.x.x/bincd ..set "CATALINA_HOME=%cd%"因为 Tomcat 的⽬录格式是固定的, 所以这⾥直接进⼊上级⽬录(cd ..), 然后设置 CATALINA_HOME 的值为上级⽬录(D:/apache-tomcat-x.x.x ).if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHomeecho The CATALINA_HOME environment variable is not defined correctlyecho This environment variable is needed to run this programgoto end继续往下看, 这⾥⼜⼀次判断了⼀下 catalina.bat 在这样的⽬录结构是是否能找到, 如果我们解压完 Tomcat 后, 把 startup.bat放在⾮ Tomcat 的 bin ⽬录下之后, 这⾥是找不到的, 就直接 goto end, 退出 Tomcat 的启动.好了, 这⾥我们直接调到 okHome 标签处.:okHomeset "EXECUTABLE=%CATALINA_HOME%\bin\catalina.bat"好了, 这⾥很简单, 设置⼀个 EXECUTABLE 变量的值指向 catalina.bat 脚本.if exist "%EXECUTABLE%" goto okExececho Cannot find "%EXECUTABLE%"echo This file is needed to run this programgoto end⼜⼀次的检查了⼀下这个脚本是否存在, 存在的话, 直接调到 okExec 标签处, 可以执⾏了.如果没有通过检查的话, 依旧退出启动, 并打印错误信息.:okExecset CMD_LINE_ARGS=:setArgsif ""%1""=="""" goto doneSetArgsset CMD_LINE_ARGS=%CMD_LINE_ARGS% %1shiftgoto setArgs先设置了⼀个 CMD_LINE_ARGS 变量, 并且其值暂且为空这⾥出现了⼀个 ""%1""=="""", 拆开看就是判断 "%1" 是否等于 "". 那么 "%1" ⼜是什么呢?这是 window 批处理的⼀个语法, 表⽰的是执⾏命令之后的第⼀个参数, 对于这⾥, 我们并没有传递什么参数, 所以这⾥的 "%1"是 ""(空).直接跳转到 doneSetArgs 标签处.如果不是空的话, 就拼在后⾯呗.这⾥这个 shift 命令意思就是移除⼀个参数, 举个例⼦就知道了:@echo offecho "%1"shiftecho "%1"建⼀个 test.bat 批处理程序, 然后把上⾯代码复制进去, 在 cmd 中执⾏并给它两个参数下⾯是执⾏结果, 这⾥⼤家可以把 @echo off 去掉再执⾏, 验证⼀下这个命令的作⽤PS D:\> .\test Hello World"Hello""World"PS D:\>这样, ⼤家应该可以理解了.继续分析:doneSetArgscall "%EXECUTABLE%" start %CMD_LINE_ARGS%:end在上⾯设置了 EXECUTABLE = %CATALINA_HOME%\bin\catalina.bat , 所以这⾥实际上是调⽤了 catalina.bat 这个脚本, 然后传递⼀个 start 参数给它.如果我们在 cmd 中运⾏ startup.bat 并且后⾯跟着⼀些参数的话, 这⾥也⼀起传递过去了.这⾥实际上就是执⾏了: %CATALINA_HOME%\bin\catalina.bat start总结这个脚本还是挺简单的, ⽬的就是找到 catalina.bat 并调⽤它.以上就是本⽂的全部内容,希望本⽂的内容对⼤家的学习或者⼯作能带来⼀定的帮助,下篇继续介绍Tomcat相关知识--《》,有兴趣的朋友可以看下。
Tomcat服务无法启动的问题的解决方法
Tomcat服务⽆法启动的问题的解决⽅法去年下半年公司就决定投⼊⼈⼒物⼒"跟风"做⼤数据⽅向的研究并应⽤到后续项⽬中,于是乎,我们也得熟悉下Java才⾏了。
先弄个JavaEE的开发环境再说吧。
装JDK、JRE,其实JDK下⾯已经有JRE了,如果在服务器上的话,只需装JRE;然后配置环境变量:新建:JAVA_HOME:D:\Java\jdk1.7.0_51新建:CLASS_PATH:.;%JAVA_HOME%\lib编辑:PATH:在最前⾯加上 %JAVA_HOME%\bin; 接着装Tomcat,startup.bat、shutdown.bat都正常,然后想把压缩版的Tomcat的启动和关闭做成Windows服务来处理,执⾏service.bat install提⽰服务创建成功,但是启动服务却失败了,系统⽇志提⽰:我之前台式机上的Windows 2003系统没啥问题,怎么到了现在这Win7系统的⼩本上就这样了呢?先分析下,既然可以正常调⽤service.bat,也就是环境变量的配置是没有问题的,对⽐下2个操作系统,似乎⽬前最有可能的就是安装时候的权限问题。
先卸载掉已经安装过的服务service.bat remove,然后"以管理员⾝份运⾏" cmd.exe,切换到service.bat所在的⽬录执⾏service.bat install重新安装Tomcat服务。
HoHo,这下可以正常启动和关闭了。
因为是开发环境,所以我们可以配置⼀个超级⽤户admin ,使其能够通过"http://localhost:8080/"来管理Tomcat。
进⼊Tomcat根⽬录下的conf⽂件夹,打开"tomcat-users.xml"进⾏编辑:复制代码代码如下:<tomcat-users><user username="admin" password="admin" roles="manager-gui,admin-gui"/></tomcat-users>重启Tomcat后,就可以使⽤admin来管理Tomcat了。
Tomcat7启动的时候报java.lang.OutOfMemoryError PermGen space错误解决方法
Tomcat7启动的时候报ng.OutOfMemoryError:PermGen space错误2014-7-17一、问题描述Tomcat7下Webapp下同时放多个程序,启动的时候报ng.OutOfMemoryError: PermGen space错误。
排查:放置单个程序,启动Tomcat看看是否成功,如果单个能够成功,则说明程序没有问题,如果单个不能成功,先找出原因,保证单个程序能启动成功。
注意:对于Class文件较多的单个程序,启动Tomcat时也可能出现该错误。
二、具体原因PermGen space的全称是Permanent Generation space,是指内存的永久保存区域,这块内存主要是被JVM存放Class和Meta信息的,Class在被Loader时就会被放到PermGen space中,它和存放类实例(Instance)的Heap区域不同,GC(Garbage Collection)不会在主程序运行期对PermGen space进行清理,所以如果你的应用中有很多CLASS的话,就很可能出现PermGen space错误,这种错误常见在web服务器对JSP进行pre compile的时候。
如果你的WEB APP 下都用了大量的第三方jar, 其大小超过了jvm默认的大小(4M)那么就会产生此错误信息了。
三、解决方法绿色版的Tomcat(该方法没试过)在tomcat_home/bin目录下找到catalina.bat,用文本编辑器打开,加上下面一行:set JAVA_OPTS= -Xms1024M -Xmx1024M -XX:PermSize=256M-XX:MaxNewSize=256M -XX:MaxPermSize=256M解释一下各个参数:-Xms1024M:初始化堆内存大小(注意,不加M的话单位是KB)-Xmx1029M:最大堆内存大小-XX:PermSize=256M:初始化类加载内存池大小-XX:MaxPermSize=256M:最大类加载内存池大小-XX:MaxNewSize=256M:这个还不清楚哈,有知道的说声还有一个-server参数,是指启动jvm时以服务器方式启动,比客户端启动慢,但性能较好,大家可以自己选择。
深入分析Tomcat无响应问题及解决方法
深⼊分析Tomcat⽆响应问题及解决⽅法 问题描述 ⽣产环境下有⼏台tomcat,但突然某个时候发现所有的请求都不能响应了,由于我们的web server使⽤的是nginx,会将请求反向到tomcat上,所以起初怀疑是nginx就没有收到请求,但查看⽇志后发现,nginx中⼤量出现499的返回,这说明问题还是出在tomcat上. 问题排查 ⾸先我想到的是不是CPU跑满了,虽说CPU没有报警但还是本能的top命令看下系统负载,发现系统只有0.x的负载,cpu,内存消耗都是正常的. 由于CPU没有出现异常,所以应该不是GC出现了问题,但还是检查了下GC log,果然GC也没问题 此时必须让jstack上场了,果然在使⽤jstack后发现很多线程都是WAITING状态"http-nio-127.0.0.1-801-exec-498" daemon prio=10 tid=0x00002ada7c14f800 nid=0x16a6 waiting on condition [0x00002ada9c905000] ng.Thread.State: WAITING (parking) at sun.misc.Unsafe.park(Native Method) - parking to wait for <0x00000007873e6990> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject) at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043) at org.apache.http.pool.PoolEntryFuture.await(PoolEntryFuture.java:133) at org.apache.http.pool.AbstractConnPool.getPoolEntryBlocking(AbstractConnPool.java:282) at org.apache.http.pool.AbstractConnPool.access$000(AbstractConnPool.java:64) at org.apache.http.pool.AbstractConnPool$2.getPoolEntry(AbstractConnPool.java:177) at org.apache.http.pool.AbstractConnPool$2.getPoolEntry(AbstractConnPool.java:170) at org.apache.http.pool.PoolEntryFuture.get(PoolEntryFuture.java:102) at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.leaseConnection(PoolingHttpClientConnectionManager.java:240) at org.apache.http.impl.conn.PoolingHttpClientConnectionManager$1.get(PoolingHttpClientConnectionManager.java:227) at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:173) at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:195) at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:85) at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:108) at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:186) at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:82) at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:106) at com.weimai.utils.HttpClientUtil.doGet(HttpClientUtil.java:105) at com.weimai.utils.HttpClientUtil.doGet(HttpClientUtil.java:87) at com.weimai.utils.WeiBoUtil.checkUser(WeiBoUtil.java:214) at erInfoController.newWeiboLogin(UserInfoController.java:1223) at sun.reflect.GeneratedMethodAccessor390.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at ng.reflect.Method.invoke(Method.java:606) 此时意识到问题应该出现http连接上,马上⽤netstat查看下801端⼝的连接状态,果然发现很多请求都是CLOSE_WAIT,这⾥简单解释下CLOSE_WAIT状态,如果我们的client程序处于CLOSE_WAIT状态的话,说明套接字是被动关闭的,整个流程应该是这样 因为如果是server端主动断掉当前连接的话,那么双⽅关闭这个TCP连接共需要四个packet server -> FIN -> client server <- ACK <- client 这时候server端处于FIN_WAIT_2状态,⽽我们的程序处于CLOSE_WAIT状态 server <- FIN <- client 这时client发送FIN给server,client就置为LAST_ACK状态。
华数平台维护文档
6 双网卡平台配置
1 双网卡情况(一个网卡接内网,一个网卡接外网)平台配臵双网域,各个服 务器内网网域配内网地址,外网网域配外网地址,对外 ip 地址配外网地址。 2 单网卡情况(内网通过路由器映射到外网) 这里两种情况: a. 平台中无 E 家设备,按照双网卡情况配臵(注意先配臵内网网域) b. 平台中包含 E 家设备,各个服务器(除 PAG 服务器)内网网域配内网地址, 外网网域配外网地址,对外 ip 地址配外网地址。Pag 服务器的内外网网域均配 臵内网地址。
平台搭建完成后,我们登录平台发现如下 404 错误: 1. 数据库连接不上导致(数据库监听未正常启动) 2. 数据库服务器空间不足 3. tomcat 所在服务器中毒,查看 tomcat 日志文件,搜索 modules\task\bo,如 下图所示。
解决方案 赛门铁克杀毒、MACFEE 杀毒软件进行杀毒。
1.2 回放流问题排查
回放问题基本可以参考实时预览的排查方法。
首先,如果是 pcnvr 回放,排查 6454,6400 以及 6410 是否开启;如果是设备
和嵌入式(cvr)存储回放,排查 6354,6300 以及 6310 是否开启。
如果回放服务器运行正常,回放失败可以查看日志信息。 设备或嵌入式回放
5
华数后期维护文档
那么我们也可以考虑修改流媒体的 RTSP 端口。 当然除了检查 554 端口,还要检查 6000 端口,6010 端口,要了解每个端口的 作用请参看第二节。
2. 通过以上的检查确保流媒体正常运行时,如果实时取流失败,可以查看日 志。
首先,日志中肯定会有一条 debug 信息: 预览:“CRtspSession::proc_describe url:rtsp://172.5.22.238:554/hc8://172.5.19. 103:8000:3:0” 上 墙 :“ On TV Wall,URL:rtsp://171.7.5.110:554/171.7.5.241: 8000:HIK-DS8000 HC :0:0: admin:12345/av_stream” 然后,请根据第三节的 URL 格式,分析下客户端发过来的取流 URL 是否正确。 然后可能打印一些错误的日志: 比如, 上墙:“Process_Setup failed:<<Open source failed>>” 预览:“Process_Describe failed:<<open source failed>>” 海康设备打印这条之后基本上接着会打印以下两个之一,一般预览失败都是这 个原因。 “Login failed:<<Device:172.5.22.103>>, <<ErrorCode:5>>” 登录设备失败,错误码直接可以参看 SDK 错误代码。 “Real Play failed: <<Device: 172.5.22.103>>,<<ErrorCode:7>>” 掉预览接口失败,错误码直接可以参看 SDK 错误代码。
tomcat常见错误与解决方法
上海纽斯达科技tomcat常见错误与解决方法上海纽斯达科技有限公司2014-10-25文档状态目的:在tomcat 服务器出现故障时,能快速定位并解决相关错误。
保密:本文档仅供内部使用,请勿外传概述:tomcat 常见错误与问题之解决方法技术指南。
安装环境:系统环境:redhat enterprise 6.5 64bit文件状态:【 】草稿【 】修改稿 【√】正式发布 文档编号 Nsdkj-779 保 密 等 级 限制 作 者 刘恒亮 最后完成日期 2014-12-25 审 核 人最后审核日期 2014-12-25 批 准 人最后批准日期 2014-12-25注释:Q代表问题,A代表错误解决办法Q:在以tomcat用户启动tomcat时提示:The JAVA_HOME environment variable is not defined This environment variable is needed to run this programA:没有在在tomcat的配置文件.bash_profile中设置环境变量JAVA_HOME,具体设置方法为:加入如下几行:JAVA_HOME=/home/tomcat/j2sdk1.4.2_08(具体值要以实际的jdk安装路径为准)export JAVA_HOMECLASSPATH=/home/tomcat/j2sdk1.4.2_08/lib/tools.jar:/home/tomcat/j2sdk1.4.2_08/li b/dt.jarexport CLASSPATHQ: 在以tomcat用户登录linux系统后,提示:-bash: /home/tomcat/j2sdk1.4.2_08: is a directory-bash:/home/tomcat/j2sdk1.4.2_08/lib/tools.jar:/home/tomcat/j2sdk1.4.2_08/lib/dt.ja r:没有那个文件或目录。
记一次tomcat7.0版本启动项目失败问题
记⼀次tomcat7.0版本启动项⽬失败问题测试项⽬在tomcat7中启动失败,报错如下:@794314bc3Error during job execution (jobs.Bootstrap)Oops: VerifyError~ play.Logger.niceThrowable(Logger.java:570) ~ play ~ 35845play.exceptions.UnexpectedException: Unexpected Errorat play.Invoker$Invocation.onException(Invoker.java:244)at play.jobs.Job.onException(Job.java:124)at play.jobs.Job.call(Job.java:163)at Invocation.Job(Play!)Caused by: ng.VerifyError: Expecting a stack map frameException Details:Location:controllers/payment/PaymentBaseAction.check()V @23: nopReason:Expected stackmap frame at this location.Bytecode:0000000: b804 1c00 b801 8c9a 00121301 8e03 bd000000010: 6bb8 0190 a700 c700 b1b8 0192 b800 794b0000020: 1304 152a b804 1700 2ab6 009e 3c13 04180000030: 1bb8 041a 001b aa00 00000097000000000000040: 00000004000000220000 007f 000000850000050: 0000 008b 00000091 2a4d 014e 2c13 02a20000060: 1302 a413 02a6 b802 aac0 004f 4e2d b8000000070: 4999 003e 2a4d 033e 2c13 02ab 1302 ac130000080: 02ae b802 b0c0 0141 b602 b33e 1d99 00220000090: 2a4d 014e 2c13 02b4 1302 b513 02b7 b80200000a0: b9c0 004f 4e2d b800 22990006 b800 acb800000b0: 00af a700 1bb8 00b2 a700 15b8 00b5 a70000000c0: 0fb8 00b8 a700 09b8 00bb a700 03a7 000e00000d0: 3a06 013a 05b8 041e 1906 bf01 3a05 b80400000e0: 20b1Exception Handler Table:bci [0, 208] => handler: 208Stackmap Table:same_frame(@25)append_frame(@88,Object[#122])chop_frame(@175,1)same_frame(@181)same_frame(@187)same_frame(@193)same_frame(@199)same_frame(@205)same_locals_1_stack_item_frame(@208,Object[#978])same_frame(@219)at payment.PaymentProxy.init(PaymentProxy.java:60)at jobs.Bootstrap.initPayment(Bootstrap.java:64)at jobs.Bootstrap.doJob(Bootstrap.java:54)at play.jobs.Job.doJobWithResult(Job.java:50)at play.jobs.Job.call(Job.java:146)... 1more原因:jvm验证时出了错误:显⽰字节码错误:⽹上的解释是因为引⼊版本为51的字节码规范,使⽤了严格的类型检查器,任何⼯具修改了字节码的,都需要更新stackmap,但是jws修改了字节码,⽽没有更新 stackmap使⽤了即java的新特性,所以使⽤较⾼的版本进⾏编译时就会报这个错。
Tomcat启动失败的解决方法
Tomcat启动失败的解决方法
1.JDK版本和Tomcat版本不匹配,通常原因是JDK版本过低
例如Tomcat5.5搭配JDK6.0
此种情况会出现启动Tomcat的时候,加载信息在屏幕上停留几秒就消失,Tomcat没有任何反应。
解决方法:
(1)将JDK目录下的bin文件夹中的msvcr71.dll 复制到tomcat的BIN文件夹中。
(2)系统缺少msvcr71.dll文件!
从别的电脑上cope其添加到 <windows>/system32 目录下即可!
2.JDK环境变量设置错误
常见的,例如JAVA_HOME没设置,或者设置错误, JAVA_HOME后不能含有; 否则会影响到后面classpath和path的设置
3. 8080端口被占用
Tomcat所使用的默认为8080端口,如果它被别的服务程序占用,例如oracle等,则需要另外指派端口给Tomcat
方法:打开Server.xml,找到
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
把其中port后的8080改为别的端口,例如8088,9090,
然后重新启动Tomcat,启动成功即可。
(4)
终止进程:Javax.exe。
tomcat报错:虚拟内存不足,启动失败;页面文件太小,无法完成操作
tomcat报错:虚拟内存不足,启动失败;页面文件太小,无法
完成操作
服务器上安装了tomcat和jdk后,tomcat总是启动失败,错误日志显示:虚拟内存不足,启动失败,或者是:Error 0x800705af: 页面文件太小,无法完成操作。
后一种错误其实和前一种是一样的,只是不同的电脑系统可能显示不同。
解决办法:增大虚拟内存
步骤:
1、右键点【我的电脑】-【属性】-【高级】选项卡,
2、在【性能】栏内点【设置】-继续点【高级】选项卡,
3、在【虚拟内存】栏内点【更改】-弹出【虚拟内存】对话框,就可以设置了。
4、单选【自定义大小】,在【初始大小】里设置1024,在【最大值】里设置2048(不能超过32位操作系统的内存寻址范围——4GB)。
最后点一下【设置】可生效。
如有必要,可重启电脑。
建议将虚拟内存移动到除C盘之外的其它盘,例如D盘。
以减轻对系统盘的压力。
方法:仍在【虚拟内存】对话框,点击C盘卷标,单选【无分页大小】。
再选D盘卷标,单选【自定义大小】,设置【初始大小】和【最大值】即可。
虚拟内存最大值一般设置为物理内存的2倍。
Thisisverylikelytocreateamemoryleak.Stacktrac。。。
Thisisverylikelytocreateamemoryleak.Stacktrac。
1、问题描述启动tomcat部署项⽬时,报This is very likely to create a memory leak. Stack trace of thread错误。
29-May-2018 12:30:09.322 SEVERE [localhost-startStop-1] org.apache.catalina.core.StandardContext.startInternal One or more Filters failed to start. Full details will be found in the appropriate container log file29-May-2018 12:30:09.323 SEVERE [localhost-startStop-1] org.apache.catalina.core.StandardContext.startInternal Context [] startup failed due to previous errors29-May-2018 12:30:09.427 WARNING [localhost-startStop-1] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesJdbc The web application [ROOT] registered the JDBC driver [com.alibaba.druid.proxy.DruidDriver] but failed to un 29-May-2018 12:30:09.427 WARNING [localhost-startStop-1] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesJdbc The web application [ROOT] registered the JDBC driver [com.mysql.jdbc.Driver] but failed to unregister it wh 29-May-2018 12:30:09.428 WARNING [localhost-startStop-1] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesJdbc The web application [ROOT] registered the JDBC driver [org.h2.Driver] but failed to unregister it when the we 29-May-2018 12:30:09.428 WARNING [localhost-startStop-1] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesThreads The web application [ROOT] appears to have started a thread named [Abandoned connection cleanup thr ng.Object.wait(Native Method)ng.ref.ReferenceQueue.remove(ReferenceQueue.java:143)com.mysql.jdbc.AbandonedConnectionCleanupThread.run(AbandonedConnectionCleanupThread.java:64)java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)ng.Thread.run(Thread.java:745)2、问题原因tomcat启动奔溃,同时释放了jdbc连接。
解决 Tomcat 服务崩溃的问题
解决 Tomcat 服务崩溃的问题Tomcat 服务器是一种用来处理 Web 应用程序的开源服务器。
由于其高效、稳定的特点,近年来在 Web 开发领域得到了广泛应用。
但是,有时候 Tomcat 服务也会遇到崩溃的问题,这对于系统管理员和开发人员来说都是非常头痛的事情。
在本文中,我们将探讨如何解决 Tomcat 服务崩溃的问题,以使我们的 Web 应用程序能够更加稳定地运行。
1. 清理 Tomcat 服务器日志当 Tomcat 服务器出现崩溃的问题时,第一个要想到的就是查看 Tomcat 服务器的日志文件。
日志文件中记录了服务器的运行状态、错误信息以及异常堆栈等信息,可以帮助我们定位问题的根源。
如果日志文件过大,可能会占用过多的硬盘空间,甚至会导致服务器出现异常。
因此,我们建议定期清理 Tomcat 服务器日志文件,保留最近一段时间内的日志信息即可。
清理日志的方法:- 在 Tomcat 安装目录下找到 logs 目录,删除过期的日志文件。
- 修改 Tomcat 的 logging.properties 配置文件,配置日志的输出级别和日志的保存周期。
可根据自身需求来设置级别和周期。
2. 优化 JVM 参数设置JVM 是 Java 虚拟机,是 Java 程序的核心组件之一。
Tomcat 服务器是运行在 JVM 上的 Java 应用程序,因此 JVM 参数的设置对Tomcat 服务器的性能和稳定性有很大影响。
我们建议对 JVM 参数进行优化设置,以提升 Tomcat 服务器的运行效率和稳定性。
优化 JVM 参数的方法:- 适当增加 JVM 堆空间大小。
在 Tomcat 安装目录下的 bin 目录中的 catalina.bat (Windows)/ catalina.sh (Linux)文件中可以找到 JVM 启动参数,增加 -Xms 和 -Xmx 参数来增加 JVM 堆空间大小。
- 设置内存溢出的报警机制。
Tomcatlocalhost8080打不开
Tomcatlocalhost8080打不开最近发现⼀个问题,使⽤tomcat部署项⽬时,项⽬可以正常访问,但是localhost 8080打不开,总是出现404为了找回那只可爱的tom,我先做了个测试在tomcat的webapps⽂件夹下新建了⼀个ROOT⽂件夹,随便放了⼀个a.html,启动tomcat之后使⽤localhost:8080/a.html可以访问到.于是思考把a.html作为默认的主页,打开conf⽂件夹下的web.xml,直接定位到最后的<welcome-file-list>标签更改后更改完成之后发现使⽤localhost:8080可以直接访问a.html了(当然前提是你要启动你的tomcat)到这我们已经发现我们使⽤localhost:8080访问时.tomcat会去<welcome-file-list>标签中寻找主页,那么我们之前没有设置ROOT⽂件夹时使⽤localhost:8080访问时tomcat会去webapps下寻找ROOT⽬录找到ROOT⽬录再寻找index.html(index.jsp)⽽我现在的⽬录下是没有index.jsp这个页⾯的,所以会出现问题于是我去找了⼀个tomcat的压缩包,解压之后发现这个tomcat包下的webapps包下有如下⼀些⽂件把这些⽂件拷贝到我原来的tomcat包下的webapps⽂件夹下,重启tomcat,使⽤localhost:8080再次访问你就可以再次看到那只猫了PS:我做的时候只拷贝了ROOT⽂件夹,重启之后也可以访问,但是该页⾯的⼀些链不能⽤,有些链接指向的是../doc/../xxx.html,遂⼜拷贝了docs⽂件夹.问题解决,还有个⼈建议使⽤127.0.0.1:8080.之前某次可能把webapps下⽬录清空了,导致了这个问题⽹上说了好多什么端⼝,环境变量的问题,感觉有点扯,我项⽬都能正常访问你给我说是端⼝的问题?希望本⽂能对你有所帮助.。
tomcat 知识点总结
tomcat 知识点总结Tomcat 知识点总结Tomcat 是一个开源的 Java Web 应用服务器,由 Apache 软件基金会开发和维护。
它是目前使用最广泛的Java Web 服务器之一,被广泛应用于企业级Web 应用的开发和部署。
本文将对Tomcat 的一些重要知识点进行总结和介绍。
一、Tomcat 的基本概念和特点1. Tomcat 是一个Servlet 容器和JSP 容器,它实现了Java Servlet 和 JavaServer Pages 规范,用于处理动态的 Web 内容。
2. Tomcat 是一个独立的Web 服务器,可以独立运行,也可以与其他Web 服务器(如Apache HTTP Server)配合使用,实现更强大的功能。
3. Tomcat 使用 Java 语言开发,具有跨平台的特点,可以在不同的操作系统上运行,如 Windows、Linux、MacOS 等。
二、Tomcat 的安装和配置1. 下载 Tomcat 的安装包,并解压到指定目录。
2. 配置环境变量,设置 JAVA_HOME 和 CATALINA_HOME。
3. 配置 Tomcat 的服务器端口、虚拟主机、连接池等参数。
4. 配置 Tomcat 的日志记录,可以设置日志级别和日志文件位置。
三、Tomcat 的目录结构和重要文件1. bin 目录:包含了 Tomcat 的启动和关闭脚本。
2. conf 目录:包含了Tomcat 的配置文件,如server.xml、web.xml 等。
3. lib 目录:包含了 Tomcat 运行所需的库文件。
4. webapps 目录:用于存放 Web 应用的目录,每个 Web 应用都有一个对应的目录。
5. logs 目录:用于存放 Tomcat 的日志文件。
四、Tomcat 的启动和关闭1. 启动Tomcat:运行startup.bat(Windows)或startup.sh (Linux)脚本。
tomcat启动报错:java.util.zip.ZipException的解决方法
tomcat启动报错:java.util.zip.ZipException的解决⽅法发现问题早上起来报错误,Jenkins打包到tomcat服务器,死活启动不起来,⼀些定时任务也没跑成功。
报错如下:org.apache.catalina.startup.ContextConfig.beforeStart Exception fixing docBase for context [/test]java.util.zip.ZipException: error in opening zip fileat java.util.zip.ZipFile.open(Native Method)at java.util.zip.ZipFile.<init>(ZipFile.java:219)at java.util.zip.ZipFile.<init>(ZipFile.java:149)at java.util.jar.JarFile.<init>(JarFile.java:166)at java.util.jar.JarFile.<init>(JarFile.java:103)at .www.protocol.jar.URLJarFile.<init>(URLJarFile.java:93)at .www.protocol.jar.URLJarFile.getJarFile(URLJarFile.java:69)at .www.protocol.jar.JarFileFactory.get(JarFileFactory.java:99)at .www.protocol.jar.JarURLConnection.connect(JarURLConnection.java:122)at .www.protocol.jar.JarURLConnection.getJarFile(JarURLConnection.java:89)at org.apache.catalina.startup.ExpandWar.expand(ExpandWar.java:130)at org.apache.catalina.startup.ContextConfig.fixDocBase(ContextConfig.java:618)at org.apache.catalina.startup.ContextConfig.beforeStart(ContextConfig.java:744)at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:307)at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:95)at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:402)at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147)at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:725)at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:701)at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:717)at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:945)at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1795)at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)at java.util.concurrent.FutureTask.run(FutureTask.java:266)at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)at ng.Thread.run(Thread.java:745)04-Jan-2018 09:23:43.063 SEVERE [localhost-startStop-1] org.apache.catalina.core.ContainerBase.addChildInternal ContainerBase.addChild: start: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/test]]at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:725)at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:701)at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:717)at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:945)at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1795)at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)at java.util.concurrent.FutureTask.run(FutureTask.java:266)at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)at ng.Thread.run(Thread.java:745)Caused by: org.apache.catalina.LifecycleException: Failed to start component [org.apache.catalina.webresources.StandardRoot@778c717c]at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)at org.apache.catalina.core.StandardContext.resourcesStart(StandardContext.java:4928)at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5058)at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)... 10 moreCaused by: org.apache.catalina.LifecycleException: Failed to initialize component [org.apache.catalina.webresources.JarResourceSet@5067d644] at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:106)at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:139)at org.apache.catalina.webresources.StandardRoot.startInternal(StandardRoot.java:690)at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)... 13 moreCaused by: ng.IllegalArgumentException: java.util.zip.ZipException: error in opening zip fileat org.apache.catalina.webresources.JarResourceSet.initInternal(JarResourceSet.java:96)at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)... 16 moreCaused by: java.util.zip.ZipException: error in opening zip fileat java.util.zip.ZipFile.open(Native Method)at java.util.zip.ZipFile.<init>(ZipFile.java:219)at java.util.zip.ZipFile.<init>(ZipFile.java:149)at java.util.jar.JarFile.<init>(JarFile.java:166)at java.util.jar.JarFile.<init>(JarFile.java:103)at org.apache.catalina.webresources.JarResourceSet.initInternal(JarResourceSet.java:88)... 17 more解决⽅法纠结了半天,发现tomcat/webapps/test.war包,没有解压,搜了⼀会资料,各种遇到的问题似乎都不⼀样,以为war包有问题,⾃⼰⼿动传了⼀个进去,也没解决,同时也没解压。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Tomcat无法启动问题排查
于那个环境变量,有帖子说是tomcat5.5与jdk1.6兼容性问题,拷贝一个tcnative-1.dll到tomcat/bin下,但我试了之后没用。
应该是环境问题;
你打开windows的环境变量最后是不是多了个"."
PATH中是加了一个.,删除之后可以启动了,但这是为什么呢?加了.之后它会寻找下一级目录的信息, 结果没有, 当然出错了
1原因有可能是JDK1.6和tomcat5.5之间的兼容性问题,解决的办法如下:
将JDK1.6目录下BIN文件夹中的msvcr71.dll复制到tomcat中BIN文件夹中,这样可以成功tomcat。
(1)看log
log文件路径%TomcatHOME%\logs
(2)看启动时的控制台信息
Windows启动菜单——》执行程序——》cmd
——》cd %TOMCATHOME%\bin
——》Tomcat4的可执行程序名(或者startup.bat)
这样程序执行结束的时候,还是会回到控制带,错误信息都在里面了。
1.如果双击startup.bat,窗口一闪而过,可以在命令行里面启动startup.bat;
2.如果命令行里面启动startup.bat情况还是这样,就可以在bat命令后面加上pause。
这样就不会一闪而过了;
后来发现在tomcat目录下有一个setclasspath.bat,在终端里执行,查看JAVA_HOME 相关内容发现,原来在JAVA_HOME=C:\Program Files\Java\jdk1.6.0_03; 而恰恰是这个";"导致tomcat将java.exe的之路径组合成
C:\Program Files\Java\jdk1.6.0_03;\bin\java.exe
这两天在做jsp的东西,总想看看发布后的效果。
但总令人沮丧的是:tomcat 这只破猫不好好工作。
当你启动它的时候,加载信息的提示界面在屏幕上停留几秒钟就消失了,同时,tomcat的应用程序也自动关闭。
上网查资料,大家有很多说法:但都对症不对药。
尝试了很多次,也均以失败而告终。
它到底是什么问题呢?为什么就启动不了呢。
最后决定重装一遍,慢慢找问题。
虽然着急,但此刻也只能如此了。
重装(注意:其他必要的设置这里略去)。
装完后,哎,好使啊。
再将应用程序拖进webapps,配置Tomcat 5.0\conf下的server.xml。
仍然不好使。
尝试http://localhost:8080/, 没问题。
最后经仔细研究,发现是server.xml中的配置问题。
应该是这样做:
假如你应用程序所在文件夹的名字叫emp。
则,在server.xml的最后,之上,应该写上的是:如果这个你没写错的话,应该是差不多了
我再列举几条tomcat启动不了时网友的解决办法,如果您不属于上述问题,则可以按照这些办法来尝试。
1.TOMCAT启动时有一些显示,但仍会自动关闭,无法启动.
问题解答:
可能是地址被占用,运行桌面上的"关闭TOMCAT"快捷方式,执行完毕后再启动TOMCAT.
2.TOMCAT启动时一闪而过,无法启动.
问题解答:
可能是端口被占用,可找到TOMCAT的安装目录下的SERVER.XML文件,如..\EAM2003\conf\SERVER.XML,用记事本打开此文件,查找8080,如果找到,就将8080改为8088.
3.TOMCAT能正常启动,可见到登录界面,但登录不进系统
问题解答:
可能是IE的设置问题,将所有设置回复成默认设置,关闭"上网助手"或其他IE插件的"拦截弹出窗口"的功能.
4. 其他一些关于tomcat启动时的奇怪问题:
a.Tomcat无法从"开始"中启动,但可以在startup.bat中启动
JDK版本过低
b.启动的时候,加载信息的提示界面在屏幕上停留几秒钟就消失了,同时,tomcat的应用程序也自动关闭
在server.xml的最后,/host之上,应该写上的是:content
c.TOMCAT启动时有一些显示,但仍会自动关闭,无法启动.
可能是地址被占用,运行桌面上的"关闭TOMCAT"快捷方式,执行完毕后再启动TOMCAT. d.TOMCAT启动时一闪而过,无法启动.
可能是端口被占用,可找到TOMCAT的安装目录下的SERVER.XML文件,如..\EAM2003\conf\SERVER.XML,用记事本打开此文件,查找8080,如果找到,就将8080改为8088.
e.TOMCAT能正常启动,可见到登录界面,但登录不进系统
可能是IE的设置问题,将所有设置回复成默认设置,关闭"上网助手"或其他IE插件的"拦截弹出窗口"的功能.
5.解读startup.bat文件
@echo off //DOS在运行批处理时,会依次执行批处理中的每条命令,并且会在显示器上显示,如果你不想让它们显示,可以加一个“echo off”。
当然,“echo off”也是命令,它本身也会显示,如果连这条也不显示,就在前面加个“@”。
if "%OS%" == "Windows_NT" setlocal //判断当前系统是否是window系统
----------------- //rem 是注释(下同)
rem Start script for the CATALINA Server
rem
rem $Id: startup.bat 302918 2004-05-27 18:25:11Z yoavs $
rem ---------------------------------------------------------------------------
rem Guess CATALINA_HOME if not defined
set CURRENT_DIR=%cd% //设置当前目录
if not "%CATALINA_HOME%" == "" goto gotHome //如果设置了CATALINA_HOME环境变量,就直接到下面的gotHome处
set CATALINA_HOME=%CURRENT_DIR% //如果没有设置CATALINA_HOME,就设置CATALINA_HOME为当前目录(其实这里她假设你进入tomcat的安装目录)
if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome//判断一下catalina.bat 是否找到了,找到了就直接到下面的gotHome处
cd .. //这里他是假设你开始已经进入到了tomcat的bin目录,所以就退到上一级目录
set CATALINA_HOME=%cd%//现在再设置CATALINA_HOME为tomcat的安装目录
cd %CURRENT_DIR% //这里是进入dos的当前目录
:gotHome
if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome //再次判断catalina.bat 是否找到了,找到了就直接到下面的okHome处,没有的话,就只能提示你啦!
echo The CATALINA_HOME environment variable is not defined correctly
echo This environment variable is needed to run this program
goto end
:okHome
set EXECUTABLE=%CATALINA_HOME%\bin\catalina.bat //设置要执行的文件
rem Check that target executable exists
if exist "%EXECUTABLE%" goto okExec //再次判断catalina.bat是否找到了,找到了就直接到下面的ok
Exec处,没有的话,就提示。
echo Cannot find %EXECUTABLE%
echo This file is needed to run this program
goto end
:okExec
rem Get remaining unshifted command line arguments and save them in the set CMD_LINE_ARGS= //这里是设置参数
:setArgs
if ""%1""=="""" goto doneSetArgs //判断参数是否加入完成
set CMD_LINE_ARGS=%CMD_LINE_ARGS% %1 //将参数组成一行,接在后面
shift
goto setArgs
:doneSetArgs
call "%EXECUTABLE%" start %CMD_LINE_ARGS% //执行catalina.bat,最好将这行改为:echo "%EXECUTABLE%" start %CMD_LINE_ARGS%。