ClassNotFoundException:net.ucanaccess.jdbc.UcanaccessDriver

时间:2015-08-07 01:02:11

标签: java-ee servlets

我在eclipse中设置了一个servlet项目,我正在尝试将Access数据库(Ucanaccess)连接到它。通过查看下面的错误,它看起来像我缺少jar文件,但如果你看看attchement图像。您将看到我的所有jar文件都在项目中。

ClassNotFoundException: net.ucanaccess.jdbc.UcanaccessDriver
SQLException: No suitable driver found for          jdbc:ucanaccess://C:/Users/dave/My_WorkSpace/Eclipse_Workspaces/workspace-    jsp/JDBC_Database.accdb
Aug 06, 2015 7:29:23 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [ex02] in context with path     [/T_02_Servlet_01] threw exception
java.lang.NullPointerException
at ex02.doGet(ex02.java:104)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:622)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:617)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:668)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1521)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1478)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Unknown Source)

enter image description here

这是Servlet代码:

@WebServlet("/ex02")
public class ex02 extends HttpServlet {
private static final long serialVersionUID = 1L;

public ex02() {
    super();

    String url = "jdbc:ucanaccess://C:/Users/dave/My_WorkSpace/Eclipse_Workspaces/workspace-jsp/JDBC_Database.accdb";
    Connection con;

    try {
        Class.forName("net.ucanaccess.jdbc.UcanaccessDriver");
    } catch (java.lang.ClassNotFoundException e) {
        System.err.print("ClassNotFoundException: ");
        System.err.println(e.getMessage());
    }

    try {
        con = DriverManager.getConnection(url, "", "");
        stmt0 = con.createStatement();
    } catch (SQLException ex) {
        System.err.println("SQLException: " + ex.getMessage());
    }
}

protected void doGet(HttpServletRequest request,
        HttpServletResponse response) throws ServletException, IOException {
        //...
}

protected void doPost(HttpServletRequest request,
        HttpServletResponse response) throws ServletException, IOException {
    doGet(request, response);
}

}

1 个答案:

答案 0 :(得分:2)

JDBC驱动程序JAR文件必须位于Web应用程序类路径中,即在此情况下位于WebContent/WEB-INF/lib文件夹中。仅仅在Eclipse项目的类路径中使用它是不够的。