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()
を使用してデータベースからすべてのユーザーを読み取ります。これは実際に機能し、データベース内のすべてのユーザーが出力され(明らかな理由のため、ここには表示されません)、ドライバーが見つかりませんというエラーが発生します。
Java.sql.SQLException:適切なドライバが見つかりません
この例外には2つの原因があります。
ドライバーがロードされているように見えるため(誤った方法で)、URLは明らかに間違っているようです。 url
変数の値が次の形式と一致していることを確認してください
jdbc:mysql://localhost:3306/dbname
具体的な問題とは無関係です:JavaコードはJSPファイルに属していません。同様に作業してください。例外処理もひどいです。メッセージ/トレースを出力する代わりに、例外をthrowして(コードの残りの実行をブロックするように)する必要があります。その後、コードを続行します。
クラスをドライバーに登録しましたか?例えば:
Class.forName("net.sourceforge.jtds.jdbc.Driver");
DriverManager.getConnection(url,user,password);
私はremove mysql-connector-Java-*。jarをWEB-INF/libから、そしてaddをTomcat6/libフォルダーに入れなければなりませんでした。 (Tomcat6は、Tomcatがインストールされた場所です。)これが機能した理由はわかりませんが、私にとっては機能しました。
空のURL文字列をgetConnection()に渡していますか?エラーメッセージが始まります
No suitable driver found for ERROR
[空白]に適したドライバが見つかりませんか?ここにURLを渡していないようです。