web-dev-qa-db-ja.com

SQLException:適切なドライバーが見つかりません

Tomcatで実行されているJSPで使用するJDBCを介してMySQLデータベースにアクセスするJavaクラスがあり、No Driver Found Exceptionが発生しています。

私には方法があります:

_private static Statement makeStatement() {
   try{
    com.mysql.jdbc.Driver d = null;
    try{d = new com.mysql.jdbc.Driver();}catch(Exception e){
      System.out.println("ERROR BY NEW DRIVER " + e.toString() + 
      "\n");e.printStackTrace();}
    Connection con = DriverManager.getConnection(url, user, password);
    return con.createStatement();
   }catch(Java.sql.SQLException ex){
      System.out.println("ERROR IN makeStatement " + "\nERROR - " +
      ex.toString() +  "\n ERROR CODE:\n " + ex.getErrorCode() + 
      "\nSQLSTATE:\n " + ex.getSQLStat        e());ex.printStackTrace();}
    return null;
 }
_

これはConnection con = DriverManager.getConnection(url, user, password);でエラーをスローします。これがcatalina.outからの私の出力です。

_  Received Parameters

ERROR IN makeStatement 
ERROR - Java.sql.SQLException: No suitable driver found for 
 ERROR CODE:
 0
SQLSTATE:
 08001
Java.sql.SQLException: No suitable driver found for 
        at Java.sql.DriverManager.getConnection(DriverManager.Java:602)
        at Java.sql.DriverManager.getConnection(DriverManager.Java:185)
        at message.Message.makeStatement(Message.Java:72)
        at message.Message.query(Message.Java:79)
        at message.Message.getName(Message.Java:225)
        at org.Apache.jsp.message_jsp._jspService(message_jsp.Java:288)
        at org.Apache.jasper.runtime.HttpJspBase.service(HttpJspBase.Java:98)
        at javax.servlet.http.HttpServlet.service(HttpServlet.Java:803)
        at org.Apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.Java:331)
        at org.Apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.Java:329)
        at org.Apache.jasper.servlet.JspServlet.service(JspServlet.Java:265)
        at javax.servlet.http.HttpServlet.service(HttpServlet.Java:803)
        at org.Apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.Java:269)
        at org.Apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.Java:188)
        at org.Apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.Java:213)
        at org.Apache.catalina.core.StandardContextValve.invoke(StandardContextValve.Java:174)
        at org.Apache.catalina.core.StandardHostValve.invoke(StandardHostValve.Java:127)
        at org.Apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.Java:117)
        at org.Apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.Java:548)
        at org.Apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.Java:108)
        at org.Apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.Java:174)
        at org.Apache.coyote.http11.Http11Processor.process(Http11Processor.Java:874)
        at org.Apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.Java:665)
        at org.Apache.Tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.Java:528)
        at org.Apache.Tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.Java:81)
        at org.Apache.Tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.Java:689)
        at Java.lang.Thread.run(Thread.Java:619)
ERROR IN QUERY Java.lang.NullPointerException
ERROR in getName Java.lang.NullPointerException
-----------------------------------

  Received Parameters

        newMessage      =  
        newpassword     = 
        verifypassword  = 
        sendinfo        = 
        username        = Eli
        newusername     = 
        login   = login
        password        = tree
ERROR IN makeStatement 
ERROR - Java.sql.SQLException: No suitable driver found for 
 ERROR CODE:
 0
SQLSTATE:
 08001
Java.sql.SQLException: No suitable driver found for 
        at Java.sql.DriverManager.getConnection(DriverManager.Java:602)
        at Java.sql.DriverManager.getConnection(DriverManager.Java:185)
        at message.Message.makeStatement(Message.Java:72)
        at message.Message.query(Message.Java:79)
        at message.Message.validUser(Message.Java:195)
        at org.Apache.jsp.message_jsp._jspService(message_jsp.Java:123)
        at org.Apache.jasper.runtime.HttpJspBase.service(HttpJspBase.Java:98)
        at javax.servlet.http.HttpServlet.service(HttpServlet.Java:803)
        at org.Apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.Java:331)
        at org.Apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.Java:329)
        at org.Apache.jasper.servlet.JspServlet.service(JspServlet.Java:265)
        at javax.servlet.http.HttpServlet.service(HttpServlet.Java:803)
        at org.Apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.Java:269)
        at org.Apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.Java:188)
        at org.Apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.Java:213)
        at org.Apache.catalina.core.StandardContextValve.invoke(StandardContextValve.Java:174)
        at org.Apache.catalina.core.StandardHostValve.invoke(StandardHostValve.Java:127)
        at org.Apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.Java:117)
        at org.Apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.Java:548)
        at org.Apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.Java:108)
        at org.Apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.Java:174)
        at org.Apache.coyote.http11.Http11Processor.process(Http11Processor.Java:874)
        at org.Apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.Java:665)
        at org.Apache.Tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.Java:528)
        at org.Apache.Tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.Java:81)
        at org.Apache.Tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.Java:689)
        at Java.lang.Thread.run(Thread.Java:619)
ERROR IN QUERY Java.lang.NullPointerException
ERROR in validUser Java.lang.NullPointerException
ERROR IN makeStatement 
ERROR - Java.sql.SQLException: No suitable driver found for 
 ERROR CODE:
 0
SQLSTATE:
 08001
Java.sql.SQLException: No suitable driver found for 
        at Java.sql.DriverManager.getConnection(DriverManager.Java:602)
        at Java.sql.DriverManager.getConnection(DriverManager.Java:185)
        at message.Message.makeStatement(Message.Java:72)
        at message.Message.query(Message.Java:79)
        at message.Message.getName(Message.Java:225)
        at org.Apache.jsp.message_jsp._jspService(message_jsp.Java:288)
        at org.Apache.jasper.runtime.HttpJspBase.service(HttpJspBase.Java:98)
        at javax.servlet.http.HttpServlet.service(HttpServlet.Java:803)
        at org.Apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.Java:331)
        at org.Apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.Java:329)
        at org.Apache.jasper.servlet.JspServlet.service(JspServlet.Java:265)
        at javax.servlet.http.HttpServlet.service(HttpServlet.Java:803)
        at org.Apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.Java:269)
        at org.Apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.Java:188)
        at org.Apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.Java:213)
        at org.Apache.catalina.core.StandardContextValve.invoke(StandardContextValve.Java:174)
        at org.Apache.catalina.core.StandardHostValve.invoke(StandardHostValve.Java:127)
        at org.Apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.Java:117)
        at org.Apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.Java:548)
        at org.Apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.Java:108)
        at org.Apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.Java:174)
        at org.Apache.coyote.http11.Http11Processor.process(Http11Processor.Java:874)
        at org.Apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.Java:665)
        at org.Apache.Tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.Java:528)
        at org.Apache.Tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.Java:81)
        at org.Apache.Tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.Java:689)
        at Java.lang.Thread.run(Thread.Java:619)
ERROR IN QUERY Java.lang.NullPointerException
ERROR in getName Java.lang.NullPointerException
_

重要な唯一のエラーはmakeStatement()のエラーで、失敗すると他のすべてのエラーが発生します。 WEB-INF/libディレクトリに正しいjarファイルがあることを4回確認し、Tomcatを必要以上に再起動しました。別の.JavaファイルでmakeStatement()を使用する別のwebappがあり、そのwebappは正常に実行されます。さらに奇妙なことに、私はこれを.Javaに持っています:

_static {
  System.err.println("\n\nTEST MYSQL ACCESS: dump all relevant tables:");
  dump();
  System.err.println("END OF MYSQL ACCESS ACCESS.");
}

 public static void dump() {
   try {
     readUsers();
     for (UserRecord u: users)
     System.err.println(u.username+" "+u.password);
   } catch (Exception e) {System.err.println(e);}
 }
_

ここで、readUsers()は、makeStatement()を使用してデータベースからすべてのユーザーを読み取ります。これは実際に機能し、データベース内のすべてのユーザーが出力され(明らかな理由のため、ここには表示されません)、ドライバーが見つかりませんというエラーが発生します。

9
Eliezer

Java.sql.SQLException:適切なドライバが見つかりません

この例外には2つの原因があります。

  1. JDBCドライバーがまったくロードされていません。
  2. ロードされたJDBCドライバーのいずれともURLが一致しません。

ドライバーがロードされているように見えるため(誤った方法で)、URLは明らかに間違っているようです。 url変数の値が次の形式と一致していることを確認してください

jdbc:mysql://localhost:3306/dbname

以下も参照してください。


具体的な問題とは無関係です:JavaコードはJSPファイルに属していません。同様に作業してください。例外処理もひどいです。メッセージ/トレースを出力する代わりに、例外をthrowして(コードの残りの実行をブロックするように)する必要があります。その後、コードを続行します。

14
BalusC

クラスをドライバーに登録しましたか?例えば:

Class.forName("net.sourceforge.jtds.jdbc.Driver");
DriverManager.getConnection(url,user,password);
2
John Kane

私はremove mysql-connector-Java-*。jarをWEB-INF/libから、そしてaddをTomcat6/libフォルダーに入れなければなりませんでした。 (Tomcat6は、Tomcatがインストールされた場所です。)これが機能した理由はわかりませんが、私にとっては機能しました。

2
Parag Sarda

空のURL文字列をgetConnection()に渡していますか?エラーメッセージが始まります

No suitable driver found for ERROR

[空白]に適したドライバが見つかりませんか?ここにURLを渡していないようです。

1
heavi5ide