java.lang.ClassNotFoundException: com.microsoft.jdbc.sqlserver.SQLServerDriver

第一次写jsp,用jdbc连接数据库进行查询的时候,

Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
conn=DriverManager.getConnection(
"jdbc:sqlserver://localhost:1433;databaseName=TEST","sa","123456");

总会报如下错误


java.lang.ClassNotFoundException: com.microsoft.jdbc.sqlserver.SQLServerDriver
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1324)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1177)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:190)
at org.easybooks.test.jdbc.SqlSrvDBConn.<init>(SqlSrvDBConn.java:16)
at org.apache.jsp.validate_jsp._jspService(validate_jsp.java:68)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
.......


严重: Servlet.service() for servlet [jsp] in context with path [/jsp_jdbc] threw exception [java.lang.NullPointerException] with root cause
java.lang.NullPointerException
at org.easybooks.test.jdbc.SqlSrvDBConn.executeQuery(SqlSrvDBConn.java:33)
at org.apache.jsp.validate_jsp._jspService(validate_jsp.java:85)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:405)
........

报错的内容是找不到类 com.microsoft.jdbc.sqlserver.SQLServerDriver,由于找不到这个类导致无法加载数据库的驱动,所以DriverManager.getConnection()的返回值一直都是null, 进而导致最后的NullPointerException


找不到类com.microsoft.jdbc.sqlserver.SQLServerDriver,是因为顺序写错了。

我解压了我的驱动包sqljbc4.jar 发现路径应该是\com\microsoft\sqlserver\jdbc\SQLServerDriver


所以改成如下就可以解决问题

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance();

修改代码后,最好关掉Tomcat 或其他的服务器 在project-clean完几次再run,否则不一定跑的是最新的代码,我由于没有clean,导致这个一开始就解决的问题活生生弄了两天,血的教训

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值