转自:http://blog.hi.mop.com/GetEntry.do?id=3583661&owner=27441288
1、Cannot create JDBC driver of class '' for connect URL ''
问题:找不到jdbc驱动,但是提示信息里的class值为null,所以,可以断定Tomcat没有找到Server.xml里的Resource配置信息。可能的原因包括:
(1)没有配置Resource;
(2)Resource配置信息放置的位置错误。
(3)一个不容易发现的错误,driverClassName和url拼写错误。
解决办法:确认Resource配置正确,并且必须放在DefaultContext或者Context配置节内。
2、Cannot create JDBC driver of class 'xxx' for connect URL ''
解决办法:配置的数据库驱动类名xxx是错误的,检查并修改即可;如果确认正确,那就是找不到驱动库,拷贝一个jar到Tomcat/common/lib中即可。
3、Cannot create JDBC driver of class '' for connect URL 'xxx'
解决办法:配置的url字符串语法是错误的,检查后修改即可。
4、Cannot create PoolableConnectionFactory, cause: Io 异常: Connection refused
问题:无法创建连接池工厂对象,原因是连接被拒绝。
解决办法:检查url字符串,可能服务器地址、端口、数据库名或者数据库实例名等信息错误。修改。
5、No suitable driver 没有匹配的驱动
分析:驱动程序配置错误,请确认Tomcat的common/lib子目录中是否有数据库驱动jar。
6、Cannot create resource instance无法创建数据源实例
问题:找不到commons-dbcp-1.1.jar(版本可能不同)
解决办法:复制commons-dbcp-1.1.jar库文件到Tomcat/Common/lib子目录中。
7、root cause:
java.lang.NoClassDefFoundError: org/apache/commons/collections/CursorableLinkedList
问题:找不到commons-collections.jar。
解决办法:复制commons-collections.jar库文件到Tomcat/Common/lib子目录中。
8、root cause:
java.lang.NoClassDefFoundError: org/apache/commons/pool/impl/GenericObjectPool
问题:找不到commons-pool-1.1.jar(版本可能不同)。
解决办法:复制commons-pool-1.1.jar库文件到Tomcat/Common/lib子目录中。
关于 Cannot create JDBC driver of class... 的异常
在使用MyEclipse开发基于Struts的Web系统时,遇到了这样一个问题。
在struts-config.xml文件中配置DataSource后,启动Tomcat服务总是抛出这样的异常,Cannot create JDBC driver of class,使用的环境如下:
Eclipse 3.1.2 GA
MyEclipse 4.1.1 GA
Tomcat 5.0.28
MySQL 4.1
JDK 1.4.2
Struts 1.2
WindowsXP SP2
弄了好久都没有搞定,而且找不到原因,到网上Google了一下,才恍然大悟。网上的牛人是这样解释的。
直接在struts-config.xml中右键data-sources然后New,默认的type是:org.apache.struts.util.GenericDataSource,struts自带的一个数据库连接池。然后正确输入各种property的value。
测试,好用。
测试,好用。
如果将type选择为:org.apache.commons.dbcp.BasicDataSource,这个DBCP的数据库连接池,然后键入正确的value。
测试,提示各种异常&找不到Driver。
查看DBCP的文档,发现MYECLIPSE生成的配置XML元素有问题。
DBCP需要的是driverClassName和username这两个propertys。而Myeclipse自动生成的是driverClass和user这两个propertys。改过来之后发现DBCP的数据库连接池也好用了:)
这应该算是MYECLIPSE开发struts的一个BUG吧,数据库连接池的配置是按照struts默认的GenericDataSource来的。如果能动态的在选择数据库连接池的时候,找寻set()/get()方法来生成属性的名字应该更好。同时,也看出来不同的数据库连接池在命名规则方面存在的一些差异。
其实很简单的东西,我却花费了半天的时间,原因是我太相信工具了,以为生成的东西一定是正确的,所以一直在想是不是别的方面出错了。得到这次教训之后,要更加清晰的对工具持怀疑态度了。不能太过相信和依靠,还是自己对这些技术的了解最重要。
总之,认真+心细,才能更好的解决问题。
总之,认真+心细,才能更好的解决问题。