2017-01-14 31 views
0

我正在用REST + Mysql + Java製作一個小型項目。 休息電話工作正常。但是當我在休息函數中進行任何數據庫事務時,例如我想從數據庫中獲取一些其他值,然後給出[java.lang.ClassNotFoundException: com.mysql.jdbc.Driver]。當我通過類的obj調用相同的函數,然後它工作正常,但如果通過rest api調用調用失敗。當我對函數進行休息調用時,數據也是通過參數和參數傳入的,我可以在函數體中使用它,但無法執行數據庫事務。mysql連接在本地正常工作,但在調用rest函數調用時失敗[java]

我發現了一個相同的 question但其對ASP.net

我加入MySQL的罐子類路徑,以及在WEB-INF/lib目錄/文件夾

我的連接類:

import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.SQLException; 

public class conectionclass { 

    public static Connection getConnection(){ 

     Connection conn = null ; 
     try { 
      Class.forName("com.mysql.jdbc.Driver"); 
      conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/emps","root", "12345"); 
      System.out.println("------------- Connection Succesful ----------------"); 
     } catch (SQLException | ClassNotFoundException e) { 
      // TODO Auto-generated catch block 
      System.out.println("------------- Connection Fail ----------------"); 

      e.printStackTrace(); 
     } 
     return conn; 
    } 

} 

我的休息功能:

@POST 
@Path("/postjson") 
@Produces("application/json") 
public Employee getJSONfromApp(HashMap p) { 

    return (new empdao()).getEmployee("test", "1234") ; 

} 

員工DAO類功能:

@Override 
    public Employee getEmployee(String employee, String pass) { 
     int count = 0 ; 
     Connection conn = Connectionclass.getConnection(); 
//  System.out.println("Employee : "+employee+" Connection : "+conn); 
      if(employee!=null || employee != "") 
      { 
       String query = "select * from emps where username = '"+employee+"' && pass = '"+pass+"' "; 
       try { 
        Statement stmt = conn.createStatement() ; 
        System.out.println("Statement created.."+ stmt); 
        ResultSet a = stmt.executeQuery(query); 

        while(a.next()){ 
         return (new Employee(a.getString(2) , a.getString(3))); 
        } 

       } catch (Exception e) { 
        // TODO Auto-generated catch block 
        System.out.println("Error in connection....."); 
//     e.printStackTrace(); 
       } finally{ 
        try { 
         conn.close(); 
        } catch (Exception e) { 
         System.out.println("Error in closing connection....."); 
//      e.printStackTrace(); 
        } 

       } 

      } 

     return null; 
    } 

輸出時通過電話RestService:

------------- Connection Fail ---------------- 
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver 
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1305) 
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1157) 
    at java.lang.Class.forName0(Native Method) 
    at java.lang.Class.forName(Class.java:259) 
    at com.app.App3.Connectionclass.getConnection(Connectionclass.java:13) 
    at com.app.App3.empdao.getEmployee(empdao.java:47) 
    at com.mkyong.rest.JSONService.getJSONfromApp(JSONService.java:90) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:483) 
    at org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:140) 
    at org.jboss.resteasy.core.ResourceMethod.invokeOnTarget(ResourceMethod.java:255) 
    at org.jboss.resteasy.core.ResourceMethod.invoke(ResourceMethod.java:220) 
    at org.jboss.resteasy.core.ResourceMethod.invoke(ResourceMethod.java:209) 
    at org.jboss.resteasy.core.SynchronousDispatcher.getResponse(SynchronousDispatcher.java:519) 
    at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:496) 
    at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:119) 
    at org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:208) 
    at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:55) 
    at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:50) 
    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:610) 
    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.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.process(Http11NioProtocol.java:223) 
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1517) 
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1474) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
    at java.lang.Thread.run(Thread.java:744) 
Error in connection..... 

回答

1

得到答案,其實我的Tomcat的版本和JRE版本是不同的。 當我在上面解決問題時使它們相同。

相關問題