質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.50%

  • Java

    13803questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

  • MySQL

    5858questions

    MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

  • Eclipse

    1661questions

    Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

  • XAMPP

    497questions

    XAMPP(ザンプ)は、ウェブアプリケーションの実行に必要なフリーソフトウェアをパッケージングしたApacheディストリビューションです。 XAMPPひとつインストールするだけで、Apache、MySQL、PHP、Perlなどのソフトウェアと、 phpMyAdminなどの管理ツール、SQLiteなどのソフトウェアやライブラリモジュールなどを利用することが可能です。

エクリプスで実行すると「Cannot create JDBC driver of class '' for connect URL〜」となってしまいます。

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 5,734

poinsettia

score 17

お世話になります。 

私は昨年、プログラミング未経験でIT企業に入社し、作年の4月〜7月まで外部の研修会社で研修を受講しておりました。

そこでWEBアプリケーションの開発を学び、簡単なWEBアプリケーションを作成したので、自宅で実行してみたいと思い、研修で使ったソース等をエクリプスに突っ込んで実行ボタンを押したら、コンソールの部分に 
Cannot create JDBC driver of class '' for connect URL 'jdbc:mysql://localhost:3306/test'
と出てしまいました。
このメッセージを訳すと「URL 'jdbc:mysql://localhost:3306/test'に接続するためのJDBC driverを作成できませんでした。」という感じになると思うのですが、どこに原因があるのかわかりません。
どなたか原因や修正すべき点を教えていただけないでしょうか。 

https://teratail.com/questions/59928
こちらの質問で教えていただいて、エクリプスのMETA-INF内に作ったcontext.xmlの内容は以下の通りとなっています。

<Context>
<Resource name="jdbc/mysql"
type="javax.sql.DataSource"
className="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/test"
username="root"
password="test"
/>
</Context>

環境は以下の通りです。
OS   :MacBook Air(自宅)
Windows(研修先)
サーバー:Tomcat7 
DB   :MySQL(XAMPP) 
JDBC  :mysql-connector-java-5.1.35-ga-bin.jar 
統合環境:Eclipse neon
DB←→Servret←→JSP

「○○の情報がわからないと答えようが無い」等ありましたらご指摘お願いします。 
毎回質問ばかりで恐縮ですが、ぜひ宜しくお願いします。

matobaaさんへ
[1]
org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'jdbc:mysql://localhost:3306/test'

Cannot create JDBC driver of class '' for connect URL 'jdbc:mysql://localhost:3306/test'

at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createConnectionFactory(BasicDataSource.java:1452)

at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1371)

at org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSource.java:1044)

at work.LoginController.doPost(LoginController.java:74)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:650)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)

at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:218)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)

at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)

at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:442)

at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1083)

at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:640)

at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318)

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:745)

Caused by: java.sql.SQLException: No suitable driver

at java.sql.DriverManager.getDriver(DriverManager.java:315)

at org.apache.tomcat.dbcp.dbcp.BasicDataSource.createConnectionFactory(BasicDataSource.java:1437)

... 25 more

[2]
おそらく使っていると思いますが、確信がありません。
どこかで確認できますか?

[3]
WebContent¥WEB-INF¥lib 内に配置しています。
イメージ説明

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • matobaa

    2017/01/16 10:02

    3点教えて下さい。[1]エラー時のスタックトレース [2] JNDIを使っているか否か [3] JDBCドライバをどこに置いているか

    キャンセル

  • tkmtmkt

    2017/01/21 21:55

    上記[2]に関して、スタックトレースの「at work.LoginController.doPost(LoginController.java:74)」にあるソースコードにDB接続の処理があるはずです。  ※「実行ボタンをおしたら」との説明がありますが、スタックトレースを見るとログイン操作を行って出ているエラーのようです。tomcatの起動に失敗しているわけではないということでよろしいでしょうか。

    キャンセル

  • poinsettia

    2017/01/22 12:10

    tkmtmktさん はい、tomcatの起動に失敗しているわけではないです。「実行ボタンをおしたら」というのは誤りですね。tkmtmktさんの言う通りログイン操作を行った際にエラーになります。

    キャンセル

回答 2

checkベストアンサー

+3

context.xmlのJDBCドライバ指定箇所は以下が正しいのでは?

  <Context>
      <Resource
          name="jdbc/mysql"
          type="javax.sql.DataSource"
-         className="com.mysql.jdbc.Driver"
+         driverClassName="com.mysql.jdbc.Driver"
          url="jdbc:mysql://localhost:3306/test"
          username="root"
          password="test"/>
  </Context>

【参考】

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/01/29 20:28

    context.xmlのJDBCドライバ指定箇所を教えていただいたようにしたら、つながるようになりました。
    誠にありがとうございました。

    キャンセル

+1

実行環境のlocalhost(MacBook Air(自宅)のこと)のMySQL設定の問題かとおもいます。

  • 3306番ポートでMySQLが起動しているか
  • MySQLにtestというデータベースが作成されているか
  • testのユーザーがroot、パスワードがtestで設定されているか
    以上の3点の確認をしてみてください。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/01/21 21:27

    回答ありがとうございます。
    こちらの返信が遅くなり申し訳ありません。
    ・3306番ポートでMySQLが起動しているか
    ネットワークユーティリティでPortsscanしたところ
    Open TCP Port: 3306 mysql
    が表示されたので、3306番ポートでMySQLが起動していることになりますか?

    ・MySQLにtestというデータベースが作成されているか
    ・testのユーザーがroot、パスワードがtestで設定されているか
    この2点を確認しようとphpMyAdminにログインしようとしたら、エラーになってしまいました。
    以下表示されていた文言です。
    MySQL のメッセージ: 接続できません。設定が無効です。
    MySQL サーバに接続しようとしましたが拒否されました。config.inc.php のホスト、ユーザ名、パスワードが MySQL サーバの管理者から与えられた情報と一致するか確認してください。

    前はphpMyAdminにログインできたのですが、何か変更をしてしまったかもしれません。
    このエラーメッセージに従い、xampp¥xampfiles¥phpmyadmin¥config.inc.php¥config.inc.php
    の中を見たら
    $cfg['Servers'][$i]['user'] = 'root';
    $cfg['Servers'][$i]['password'] = '';
    となっていました。
    パスワードのところには'test'が入っていないといけなかったのでしょうか?

    キャンセル

  • 2017/01/21 21:50

    mysqlへの接続に失敗しているのであればスタックトレースに com.mysql.~ が出るような気がします。mysql接続以前にmysqlドライバを見つけられていないのだと思います。

    キャンセル

  • 2017/01/22 12:22

    tkmtmktさん
    回答ありがとうございます。
    「mysqlドライバを見つけられていない」ということに関してですが質問欄の追記[3]で書いたようにWebContent¥WEB-INF¥libにmysql-connector-java-5.1.35.bin.jarファイルがあるのですが、これとは別に何か必要なのでしょうか?

    キャンセル

  • 2017/01/22 12:51

    プログラム内でJDBCドライバのクラスを直接指定しているのではなく、設定ファイルに記述したNameを使用している場合、設定ファイルに記述ミスがあればJDBCドライバが正しい位置に置いてあってもプログラムから見つけることができないです。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.50%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

  • 解決済

    spring+thimeleaf+tomcatでPOST送信が文字化け

    Spring boot + thimeleaf + tomcatでWEBアプリ開発を行っております。 <使用ミドルウェア>  spring boot:1.3.2  thi

  • 受付中

    tomcatのコネクションプール設定について

    現在、運用しているWebアプリケーションサーバ⇒PostgreSQL間接続でコネクションプール設定が入っているはずなのですが、 tomcat⇒postgresql間の接続時にpo

  • 解決済

    Tomcat 7.0の同時アクセス数について

    windows2008R2 Tomcat Ver7.0 でサーバ構築しています。 Tomcatサーバの同時アクセス数はデフォルトでいくつまで可能でしょうか? また、その

  • 受付中

    ファイルにSystem.outを出力したいです。

    サーブレットで一つシステムを作成しているのですが、ログが出力されないので困っています。 アクセスログなどはcatlinayyyymmddといった形ででるのですが… To

  • 解決済

    Tomcatのmanager/htmlに遷移できない

    Tomcatのmanager/htmlに遷移できません。 最初は、manager/htmlのユーザ、パスワードが設定していなかったので認証できなかっただけだと思い、以下のファ

  • 解決済

    Tomcat8でDigest認証を行う方法

    実現したいこと 可能であればTomcatを使用してDigest認証を行いたいという要望がありました。 しかし、Apacheで行う方法はいくつか発見できましたが、 Tomc

  • 解決済

    Tomcatのログイン設定

    Tomcatの管理者権限アカウント設定の場所なんですが tomcat-users.xmlであってるんでしょうか? ここに<role rolename="manager-gui"

  • 受付中

    Tomcatが上手く起動しない

    前提・実現したいこと アプリケーションの開発初心者です。 これから勉強しようとしています。 こちらでの質問も初めてですが、 皆様のお力をどうかお貸しください。 発生し

同じタグがついた質問を見る

  • Java

    13803questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

  • MySQL

    5858questions

    MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

  • Eclipse

    1661questions

    Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

  • XAMPP

    497questions

    XAMPP(ザンプ)は、ウェブアプリケーションの実行に必要なフリーソフトウェアをパッケージングしたApacheディストリビューションです。 XAMPPひとつインストールするだけで、Apache、MySQL、PHP、Perlなどのソフトウェアと、 phpMyAdminなどの管理ツール、SQLiteなどのソフトウェアやライブラリモジュールなどを利用することが可能です。

  • トップ
  • Javaに関する質問
  • エクリプスで実行すると「Cannot create JDBC driver of class '' for connect URL〜」となってしまいます。