我实际上正在开发一个Servlet / MVC / Mysql迷你项目,我面临一个非常奇怪的问题。
我有一个类Catalogue
,它包含我的模型方法,那些方法是从数据库中插入,更新,删除,还有另一个类Utility
,它带有一个静态方法,可以将我连接到数据库
因此,当我在Catalogue
方法中执行main
方法时,它们工作正常,
但是,当我通过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
返回null,只有当我在Web容器上运行我的应用程序时,否则它就像我之前提到的那样正常工作。
此外,我已将mysql_connector
作为external
添加到eclipse中。
答案 0 :(得分:2)
此外,我已经将mysql_connector添加到eclipse作为外部。
你必须在
之后做错了java.lang.ClassNotFoundException:com.mysql.jdbc.Driver
表示该类不在类路径上。取连接器并将其添加到WEB-INF/lib
(如果该文件夹不存在,则创建它)。
将其添加为外部库可能会将其添加到Eclipse-Tomcat插件构建路径中,但不会将其添加到您在Web容器上运行的导出战争中。
答案 1 :(得分:0)
当我将mysql_connector.jar添加到Tomcat/lib
文件夹时,问题解决了。