“java.lang.NoClassDefFoundError: org/apache/juli/logging/LogFactory”异常解决办法

访问Tomcat搭建的Servlet时报错:

java.lang.NoClassDefFoundError: org/apache/juli/logging/LogFactory
at org.apache.catalina.startup.Bootstrap.(Bootstrap.java:60)
Caused by: java.lang.ClassNotFoundException: org.apache.juli.logging.LogFactory
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
… 1 more
Exception in thread “main”

问题出在tomcat上,配置tomcat时选择的是6.x,但是实际上是使用的tomcat 7.0,这个时候就少了一个包,叫做tomcat-juli.jar,这个问题貌似只发生在MyEclipse上,因为Eclipse不能这么选择tomcat。

怎么导入jar包呢?给个比较简单的方法:

Window – Preference – 左上角搜索tomcat – Tomcat 6.x展开 – Paths – Prepend to classpath右方点击“Add JAR/ZIP” – 找到tomcat/bin/tomcat-juli.jar – OK即可。

这个时候就完成了配置,问题就解决了!

tomcat搭建的web项目,网页第二次访问时卡住……

状态

今天用servlet和jsp写了个web小项目,后台查询mysql数据库是使用的dbcp连接池,只开了1个连接。

写完后,启动tomcat访问页面列表时,发现第一次访问没有问题,但是刷新页面或再访问其他列表页面时就一直卡住,服务端不返回任何数据到浏览器……

折腾了很久,各种打桩,发现在重启tomcat的时候,后台可以把第二次访问的页面需要查询的列表打印到控制台,但是不会返回给浏览器(其实,这个时候是没有机会返回了),经过分析,这个很像是后台在等待连接数据库,所以一直无法返回结果。仔细查看程序后,果不其然,后台访问完数据库时,忘了关闭连接,我只开了1个连接,所以第二次访问时后台一直在等待连接数据库……

坑大了,马上加上关闭连接的代码,重新部署后就OK了……所以,连接使用完一定要关闭啊!!!

想起了另一个坑,java操作文件时,没有关闭读写文件的流,文件打死都无法删除……还只有通过任务管理器结束javaw.exe进程后才能删除……所以自己创建的流用完了也要关闭啊!!!

tomcat配置https

https是增加了用于对传输数据加密保证安全的SSL(Secure Sockets Layer)协议的http。https在传输数据之前需要客户端(浏览器或者其它实现)与服务端(网站或者其它实现)之间进行一次握手,在握手过程中将确立双方加密传输数据的密码信息。TLS/SSL协议中使用了非对称加密,对称加密以及HASH算法。

继续阅读