连接数据库ClassNotFoundException的解决办法

版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/sinat_19435069/article/details/40479235

  前几天我在测试一个简单的java应用连接mysql数据库时,遇到了一个以前也遇到过的烦人问题。Class.forName(xx.xx.xx);抛出异常,此异常就是ClassNotFoundException。一开始我从网上找了一些方法,但是都无法成功,最后老师点明了错误。现在Class.forName加载出现ClassNotFoundException的几个原因归结一下。

  首先得说明为什么出现这个异常,Class.forName(xxx.xx.xx);的作用是要求JVM查找并加载指定的类,也就是说JVM会执行该类的静态代码段。java连接Mysql数据库需要依赖一个第三方的jar包mysql-connector-java-5.1.7-bin.jar,Class.forName("mysql-connector-java-5.1.7-bin.jar"),就是加载这个类,如果加载不到自然就抛出ClassNotFoundException,如果要成功加载该jar包,就需要将jar加入路径,但!不同的环境jar路径设置是不同的。

  如果是命令行模式,需要把jar包放入所在路径加入classpath中,这样java机就可以找到jar包并加载(这也是网上普遍的解决办法)。

  我使用的是eclipse IDE,在这种模式下,使用的路径是eclipse自身的路径,如果使用网上的办法是没办法解决的。以下是3种不同项目的方法,普通java project项目下没有lib目录,推荐新建一个lib目录放入jar包,eclipse刷新在右击lib,build path,将其加入路径中,就可以了(也可以jar包直接放入项目build path,建议放入lib中); JEE项目将jar放入项目lib文件夹就行;javaweb项目,如果使用tomcat容器,将jar放入项目中的WEB-INF->lib文件夹中。

  这些就是我的解决办法,如果有什么不对的欢迎大家指出。

一个关于连接数据库的问题 ClassNotFoundException

02-16

各位兄弟,我在jsp页面中连接sqlserver数据库,出错。rn我下载了SQL Server 2005 JDBC Driver,其中的jar文件我也放到classpath环境变量中了rn我也把jar文件导入到工程中了。rnrn我用一个单纯的java类来连接不会出什么问题,但是在jsp页面中总是会出错。rn我实在是找不出是哪里的原因,万般无奈之下才求助各位,希望大家指点迷津。rn谢谢了……rnrn控制台的提示信息是这样的:rn2011-2-16 11:54:48 org.apache.catalina.core.StandardWrapperValve invokern严重: Servlet.service() for servlet jsp threw exceptionrnjava.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerDriverrn at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1680)rn at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526)rn at org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:128)rn at org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:66)rn at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)rn at java.lang.Class.forName0(Native Method)rn at java.lang.Class.forName(Class.java:169)rn at org.apache.jsp.testDatabase.testConSql_jsp._jspService(testConSql_jsp.java:79)rn at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)rn at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)rn at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:386)rn at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)rn at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)rn at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)rn at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)rn at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)rn at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)rn at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)rn at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)rn at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)rn at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)rn at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)rn at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:864)rn at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:579)rn at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1665)rn at java.lang.Thread.run(Thread.java:619)rn页面上服务器返回的信息是这样的:rnrntype Exception reportrnrnmessage rnrndescription The server encountered an internal error () that prevented it from fulfilling this request.rnrnexception rnrnorg.apache.jasper.JasperException: An exception occurred processing JSP page /testDatabase/testConSql.jsp at line 24rnrn21: rn22: <%rn23: // tryrn24: Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");rn25: String url = "jdbc:sqlserver://localhost:4000;databaseName=testJsp";rn26: Connection conn = DriverManager.getConnection(url,"sa","sa123456");rn27: Statement sqlStmt = conn.createStatement();rnrnrnStacktrace:rn org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:519)rn org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:410)rn org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)rn org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)rn javax.servlet.http.HttpServlet.service(HttpServlet.java:717)rnrnrnroot cause rnrnjavax.servlet.ServletException: java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerDriverrn org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:865)rn org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:794)rn org.apache.jsp.testDatabase.testConSql_jsp._jspService(testConSql_jsp.java:99)rn org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)rn javax.servlet.http.HttpServlet.service(HttpServlet.java:717)rn org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:386)rn org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)rn org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)rn javax.servlet.http.HttpServlet.service(HttpServlet.java:717)rnrn

没有更多推荐了,返回首页

私密
私密原因:
请选择设置私密原因
  • 广告
  • 抄袭
  • 版权
  • 政治
  • 色情
  • 无意义
  • 其他
其他原因:
120
出错啦
系统繁忙,请稍后再试