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.(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,导致这个一开始就解决的问题活生生弄了两天,血的教训

你可能感兴趣的:(javaee基础入门)