【问题标题】:Can't connect The servlet to the database无法将 servlet 连接到数据库
【发布时间】:2014-01-03 07:41:33
【问题描述】:

我实际上正在开发一个 Servlet/MVC/Mysql 迷你项目,我遇到了一个非常奇怪的问题。

我有一个类Catalogue,它包含我的模型方法,这些方法从数据库中插入、更新、删除,我还有另一个类Utility,它带有一个将我连接到数据库的静态方法。

所以当我在main 方法中执行Catalogue 方法时,它们工作正常, 但是当我通过 servlet 运行相同的方法时,我得到一个空指针异常。

这是我的日志:

java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1680)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at mod.catal.Utilitaire.<clinit>(Utilitaire.java:7)
at mod.catal.Catalogue.selectCategories(Catalogue.java:46)
at mod.catal.Catalogue.selectCatByKeyword(Catalogue.java:43)
at CatalogueServlet.doPost(CatalogueServlet.java:36)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:643)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:861)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:606)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Unknown Source)


déc. 16, 2013 12:54:51 AM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet catalServlet threw exception
java.lang.NullPointerException
at mod.catal.Catalogue.selectCategories(Catalogue.java:50)
at mod.catal.Catalogue.selectCatByKeyword(Catalogue.java:43)
at CatalogueServlet.doPost(CatalogueServlet.java:36)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:643)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:861)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:606)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Unknown Source)

返回错误的行是:

Connection conn=Utilitaire.getConnection();
PreparedStatement ps=conn.prepareStatement(requete);

conn 仅当我在 Web 容器上运行我的应用程序时返回 null,否则它可以正常工作,正如我之前提到的。

另外,我已经将mysql_connector 作为external 添加到eclipse 中。

【问题讨论】:

    标签: java mysql servlets model-view-controller


    【解决方案1】:

    另外,我已经将 mysql_connector 作为外部添加到 eclipse 中。

    你一定做错了,因为

    java.lang.ClassNotFoundException: com.mysql.jdbc.Driver

    表示该类不在类路径中。获取连接器并将其添加到WEB-INF/lib(如果该文件夹不存在,请创建它)。

    有可能将其添加为外部库会将其添加到 Eclipse-Tomcat 插件构建路径中,但不会将其添加到您在 Web 容器上运行的导出战争中。

    【讨论】:

    • 我这样做了,但似乎没有任何改变,因为我仍然遇到相同的错误。
    • @HossamOukli 您要导出war 文件吗?解压war并检查你的mysql jar是否在它应该在的地方。在这一点上,你有哪个罐子?
    • 我有 com.mysql.jdbc_5.1.5.jar,它现在在 WEB-ING/lib 文件夹中。
    • 对了,我没有从官网下载jdbc驱动,只是google了一下,可能是我的文件坏了?
    • @Hossam 您可以随时尝试获取正确的版本。您可以从here 下载您想要的任何版本的二进制文件(jar)。或者查看 MySQL 站点。
    【解决方案2】:

    当我将 mysql_connector.jar 添加到我的Tomcat/lib 文件夹时,问题就解决了。

    【讨论】:

      猜你喜欢
      • 2016-03-22
      • 1970-01-01
      • 2012-11-25
      • 1970-01-01
      • 1970-01-01
      • 2011-05-22
      • 2011-01-27
      • 1970-01-01
      • 2012-07-27
      相关资源
      最近更新 更多