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.jar
export 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/⽂件
$CATALINA_HOME/publish/chatroom/resource下的所有.xml⽂件
所有上传图⽚⽬录都需要写权限。
改变⽂件⽬录权限的⽅法:执⾏下⾯命令,设置所有的tomcat安装下的⽂件和⽬录,可以保证执⾏,但是不是很安全。
1. 设置tomcat上级⽬录/opt所有⽤户都有读写执⾏权限:
chmod 777 [tomcat的上级⽬录]
2. 设置tomcat5.0.28⽬录下的所有⽂件的属主为tomcat:
chown -R tomcat [tomcat安装⽬录]
3. 设置所有tomcat5.0.28下的所有⽂件和⽬录的属主(tomcat)具有读写执⾏权限
chmod 700 -R /opt/tomcat5.0.28
servlet和tomcat的关系问题4:执⾏startup.sh⽂件后告诉地址已经使⽤,导致tomcat不能启动
解决:可能是前⼀次执⾏./shutdown.sh⽂件关闭tomcat时没有停⽌已经启动的Java进程,⽽这个进程仍然在监听tomcat所使⽤的端⼝,或者有另外⼀个tomcat正在运⾏,l⽂件中的监听端⼝和当前tomcat冲突。
使⽤下⾯命令查看当前系统是否有正在监听的端⼝(8080--webcache, 90--www或http).
1. 列出所有系统正在监听的端⼝和绑定的地址netstat -l
2. 出当前系统中的所有进程,管道符号过滤输出显⽰包含java字符串的⾏
ps -A |grep java
tty time proc
1021 ? java
3. 结束⼀个指定的进程:
kill [进程号]
4. 强制杀死⼀个进程:
kill -9 [进程号]
如果确定不是别的tomcat运⾏导致的冲突或者没有java进程运⾏可以再次运⾏startup.sh⽂件启动tomcat
⼆、Tomcat 运⾏时错误及解决
问题1: org.apachemons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (Network error IOException: Connection refused: connect)
问题2:Caused by: java.sql.SQLException: Network error IOException: Connection refused: connect
问题3:Caused by: java.NET.ConnectException: Connection refused: connect
解决:数据库未开情况下运⾏tomcat出现的问题,把数据库打开就⾏了
问题4:java.lang.NoSuchMethodError: org.objectweb.asm.ClassVisitor.visit(IILjava/lang/String;Ljava/lang/String;
[Ljava/lang/String;Ljava/lang/String;)Vat ClassEmitter.begin_class(ClassEmitter.java:77) 这个问题是最最常见的,第⼀次整合ssh的时候会发现这个问题,有时候删除掉相关的包还是会冲突。所以解决办法我⼀般是:
解决:把MyEclipse中的hibernate中的有关ASM的包全部删除,将spring中asm包拷贝进去重启就Ok了,有时候需要删除其他⽂件,到⽹上吧;
还有个解决办法:Spring 和 Hibernate 共⽤的⼀些 jar ⽂件发⽣了版本冲突, 删除 WEB-INF/lib/asm-2.2.3.jar 然后重启Tomcat.
问题5:javax.servlet.jsp.JspException: Invalid argument looking up property usersVO.account of bean loginForm
解决:⼀般提⽰这种错误表⽰VO中的form没有实例化,在reset⽅法中new⼀下就Ok了。养成良好的编码习惯可以避免这种简单错误。
问题6:严重: Exception loading sessions from persistent storage
解决:tomcat安装⽬录\work\Catalina\localhost\{webAppName}\SESSIONS.ser,删除此⽂件
三、出现404错误是因为你所请求的页⾯不可⽤!
这是response对象的http响应中的状态⾏404表⽰当前请求的页⾯不可⽤!200表⽰测试通过。500表⽰服务器内部发⽣错误等!
总结
以上就是这篇⽂章的全部内容了,希望本⽂的内容对⼤家学习或者⼯作能带来⼀定的帮助,如果有疑问⼤家可以留⾔交流。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论