4

I have a problem and need help in Class.forName("com.mysql.jdbc.Driver") that throw class not found exception when i run webservice from eclipse ,but when I create new java project its run perfectly.

I add the mysql-connector-java-5.1.19-bin.jar in the build path for both projects but I don't know what is the problem in the webservice.

  public String insertOrder(
         int current_id, 
        int table_id) 
        {
            try {
      Class.forName("com.mysql.jdbc.Driver");
      Connection con = 
    DriverManager.getConnection("jdbc:mysql://localhost:3306/myhoteldb", "root", "mypassword");
      PreparedStatement st = 
    con.prepareStatement("insert into orders(orders.current_id,orders.table_id) values(?,?)");
      st.setInt(1, current_id);
      st.setInt(2, table_id);

      st.executeUpdate();
      } catch (Exception e) {
      System.out.println(e.getMessage());
      }
      return "record inserted";
      }
    }

and this the error log

  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 pkg.MyServices.insertOrder(MyServices.java:124)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.axis2.rpc.receivers.RPCUtil.invokeServiceClass(RPCUtil.java:194)
at org.apache.axis2.rpc.receivers.RPCMessageReceiver.invokeBusinessLogic(RPCMessageReceiver.java:102)
at org.apache.axis2.receivers.AbstractInOutMessageReceiver.invokeBusinessLogic(AbstractInOutMessageReceiver.java:40)
at org.apache.axis2.receivers.AbstractMessageReceiver.receive(AbstractMessageReceiver.java:114)
at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:173)
at org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRequest(HTTPTransportUtils.java:173)
at org.apache.axis2.transport.http.AxisServlet.doPost(AxisServlet.java:144)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
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:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Unknown Source)
Hardik Mishra
  • 14,779
  • 9
  • 61
  • 96
Basant
  • 305
  • 1
  • 8
  • 23
  • 4
    When you export your .war file, is the .jar included? – Michael Apr 06 '12 at 00:38
  • @Michael's comment is why it's good during dev to use exploded war files, so you have visibility into what is actually there. – Nathaniel Ford Apr 06 '12 at 01:01
  • 1
    Hardik is right. Basically the issue is that even though the Jar is there in the class path, the server is not able to find and access it and hence the excpetion. – Logan Apr 06 '12 at 06:57

1 Answers1

17

If this code works in your J2SE it means you need to have a JAR file somewhere containing com.mysql.jdbc.Driver class (so called JDBC driver). This JAR needs to be visible in Tomcat. So, I would suggest to place mysql-jdbc.jar at physical location to /WEB-INF/lib directory of your project.

Many times in the past, I have experienced ClassNotFoundException if jar is not at physical location. Then restarting Tomcat should work.

Hardik Mishra
  • 14,779
  • 9
  • 61
  • 96