这问题已经捣鼓两天了,尝试在这碰到高手解答,先谢了
我是用vbox内装centosServer做的虚拟主机机,用samba将整个目录映射的我的主机Centos桌面版,然后用eclipse在映射的目录内工作,本来好好的,后来切换WIN8,win8当机,强制重启后,将虚拟机文件破坏,无奈重装了VBOX,结果数据源配置一直出错
org.apache.commons.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null'
at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:780)
我用的tomcat6 .mysql版本是
mysql Ver 14.14 Distrib 5.1.73, for redhat-linux-gnu (i386)
java 版本:
java version "1.7.0_51"
数据库链接的驱动:(并将其只拷贝到了/usr/share/tomcat6/lib下,将/WEB-INF/lib/下的删除了)
mysql-connector-java-5.1.29-bin.jar
配置META-INF/context.xml如下:
<Context reloadable="true">
<Resource name="jdbc/lyshwUser" auth="Container" type="javax.sql.DataSource"
username="usname" password="dbpass" driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://127.0.0.1:3306/lyshwUser?characterEncoding=UTF-8"></Resource>
</Context>
配置WEB-INF/web.xml如下
<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/lyshwUser</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
servlet代码如下:
Context ctx = new InitialContext();
ds = (DataSource) ctx.lookup("java:comp/env/jdbc/lyshwUser");
//**这里是临时加上的getConnection();
Connection con=ds.getConnection();
//只要执行上面的ds.getConnection();直接就抛出异常
百度,google了N多方法,都无效,其实tomcat6应该就配置这几个文件就可以了,还有work
/ 和conf/Catalina/localhost/ 下的文件删了N次,都不见效果,vbox虚拟
机未出问题是一只好好的,出问题后,重新搭配环境居然一直不行,郁闷了,求各位高手帮忙找下问题。
先感谢楼下两位的热心回答。
我没有修jar包。
我 说下我都 尝试过的步骤:
我先将jdbc5.1.29的jar包在两个 lib目录下都删除,结果报错空指针异常什么的,然后拷贝到web-inf/lib下一份,不报空指针异常,但还是出现老问题,然后再删除-空指针异常 。然后拷贝到tomcat6/lib目录下,没有空指针异常,这是不是说明在tomcat6/lib下,这个jar包也能工作了 ?而且我看的孙伟鑫老师的书上说数据源是由servlet管理,必须要将这个jar包拷贝到tomcat6/lib目录下(顺便提下,两个lib目录下同时存在过jdbc驱动的jar包我也试过),而且我还是过至少3个驱动的jar包,一个是3.xx的包,一个是原书带的名字就是mysqldriver.jar,原书带的版本低了,不好用。
web-inf/web.xml中的<resource-ref>标签我直接删了,报错不能绑定数据源,然后将此标签加到 /conf/web.xml 内,不报错,我将context.xml内的name改名后没有特殊的报错,此文件是用的utf-8格式,难道真的是这个文件不工作?可应该怎么改?
我先将jdbc5.1.29的jar包在两个 lib目录下都删除,结果报错空指针异常什么的,然后拷贝到web-inf/lib下一份,不报空指针异常,但还是出现老问题,然后再删除-空指针异常 。然后拷贝到tomcat6/lib目录下,没有空指针异常,这是不是说明在tomcat6/lib下,这个jar包也能工作了 ?而且书上说 这个驱动是由servlet管理,应在tomcat6/lib目录下
我先将jdbc5.1.29的jar包在两个 lib目录下都删除,结果报错空指针异常什么的,然后拷贝到web-inf/lib下一份,不报空指针异常,但还是出现老问题,然后再删除-空指针异常 。然后拷贝到tomcat6/lib目录下,没有空指针异常,这是不是说明在tomcat6/lib下,这个jar包也能工作了 ?而且书上说 这个驱动是由servlet管理,应在tomcat6/lib目录下
追答哦,你是对的,我搞错了,驱动程序应该是放在服务器下的目录,不是应用程序下的。
现在你放在 tomcat6/lib 下还是有问题?
是啊,真的很是无奈。不过楼下也说过,应该放到WEB-INF/lib目录里可以方便移植,而且,我尝试的操作,放在appliction目录下,没有报错,说明也工作了。现在问题还没有解决,真是让人郁闷,我又装了一套虚拟机,还是一样的结果,郁闷死了,怎么会这样?按理说像这种情况不该只我一个人发现啊,应该是普遍的问题才是。问题到底是出在哪里?
百度只能采纳一个人大答案真是有点郁闷,还是要谢谢你的帮忙
jar包 我没动的。
web-inf/web.xml中的标签我直接删了,报错不能绑定数据源,然后将此标签加到 /conf/web.xml 内,不报错,我将context.xml内的name改名后没有特殊的报错,此文件是用的utf-8格式,难道真的是这个文件不工作?可应该怎么改?
可能不是太有针对性,我的几点建议:
数据源和对它的引用都是应用程序级,不应该放到服务器的设置里,所以说你最开始的做法:<Resource/>放在META-INF/context.xml,<resource-ref/>放在WEB-INF/web.xml是最规范的做法
jdbc驱动jar包放WEB-INF/lib,没必要放tomcat的lib里面,然后检查一下是否有多个不同版本的jar包互相冲突
xml文件的编码,现在想想问题应该不大,因为配置都是用的英文,没有中文,不过你可以用文本编辑器打开每个用到的xml看看,确保编码和xml头部宣言的是对应的,这样比较保险
你说你的虚拟机崩溃过,可以考虑是不是linux上的文件系统有问题,建议你用fsck之类的检查一下
升级tomcat试试,tomcat6已经过时了,可以试试最新的7系列
第2提示,应该确定没这可能,我又重装了一套vbox,还是一样。第3个提示,xml格式方面我应该确定没有错误的可能。第4提示刚出问题时就用过FSCK,不过醒觉win8当机该用windows扫描,结果是扫出了些错,但是VBOX的文件在VBOX-linux下修复了下,再在win修复了遍,结果是一塌糊涂,其实当时直接在win下扫描或许会好些。第5问题,我变态了,因为这问题太蹊跷了,我不碰南墙不回头了
追答先在Windows下修复确保vbox相关的文件都没问题,再在vbox里对linux的文件系统修复一下吧
本回答被提问者采纳