Google Cloud SQL を利用した開発をしようとしていますが、下記のエラーが発生してローカルのMySQLデータベースに接続できずに困っています。
java.lang.IllegalStateException: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
Eclipseのプロジェクトプロパティには、「Use MySQL instance」に設定しています。
「Use Google Cloud SQL instance」に設定すると、クラウド上のデータベースの読み書きは正常に行えます。
そもそもローカルのMySQLデータベースを利用した開発をすることは可能なのでしょうか。可能な場合、その設定方法などをどなたか教えて頂けないでしょうか。
ちなみに MySQL Connector/J 下記からダウンロードした jar (mysql-connector-java-5.1.19-bin.jar)を WEB-INF\lib に配置しました。
http://dev.mysql.com/downloads/connector/j/
上記 jar をビルドパスに設定しても、設定しなくても現状は同じです。
ソース(guestbook.GuestbookServlet)の抜粋は下記です。
public void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException {
resp.setContentType("text/html; charset=utf-8");
PrintWriter out = resp.getWriter();
Connection con = null;
try {
DriverManager.registerDriver(new AppEngineDriver());
con = DriverManager.getConnection("jdbc:google:rdbms://mydomain:myproject:myinstance/guestbook", "user1", "secret"); // ここで例外が発生!
// 抜粋
} catch (SQLException e) {
e.printStackTrace();
} finally {
if (con != null)
try {
con.close();
} catch (SQLException ignore) {
}
}
}
例外発生時のスタックトレース(抜粋)は下記です。
java.lang.IllegalStateException: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
at com.google.appengine.api.rdbms.dev.LocalRdbmsServiceLocalDriver.registerDriver(LocalRdbmsServiceLocalDriver.java:95)
at com.google.appengine.api.rdbms.dev.LocalRdbmsServiceLocalDriver.init(LocalRdbmsServiceLocalDriver.java:73)
at com.google.appengine.api.rdbms.dev.LocalRdbmsService.init(LocalRdbmsService.java:83)
at com.google.appengine.tools.development.ApiProxyLocalImpl.startServices(ApiProxyLocalImpl.java:581)
at com.google.appengine.tools.development.ApiProxyLocalImpl.access$700(ApiProxyLocalImpl.java:46)
at com.google.appengine.tools.development.ApiProxyLocalImpl$2.run(ApiProxyLocalImpl.java:564)
at com.google.appengine.tools.development.ApiProxyLocalImpl$2.run(ApiProxyLocalImpl.java:562)
at java.security.AccessController.doPrivileged(Native Method)
at com.google.appengine.tools.development.ApiProxyLocalImpl.getService(ApiProxyLocalImpl.java:561)
at com.google.appengine.tools.development.ApiProxyLocalImpl.resolveDeadline(ApiProxyLocalImpl.java:233)
at com.google.appengine.tools.development.ApiProxyLocalImpl.doAsyncCall(ApiProxyLocalImpl.java:214)
at com.google.appengine.tools.development.ApiProxyLocalImpl.makeSyncCall(ApiProxyLocalImpl.java:147)
at com.google.apphosting.api.ApiProxy.makeSyncCall(ApiProxy.java:105)
at com.google.appengine.api.rdbms.RdbmsApiProxyClient$ApiProxyBlockingInterface.makeSyncCall(RdbmsApiProxyClient.java:95)
at com.google.appengine.api.rdbms.RdbmsApiProxyClient$ApiProxyBlockingInterface.openConnection(RdbmsApiProxyClient.java:73)
at com.google.cloud.sql.jdbc.internal.SqlProtoClient.openConnection(SqlProtoClient.java:58)
at com.google.cloud.sql.jdbc.Driver.connect(Driver.java:66)
at com.google.cloud.sql.jdbc.Driver.connect(Driver.java:26)
at java.sql.DriverManager.getConnection(DriverManager.java:582)
at java.sql.DriverManager.getConnection(DriverManager.java:185)
at guestbook.GuestbookServlet.doPost(GuestbookServlet.java:26)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166)
No.1ベストアンサー
- 回答日時:
appengine-java-sdk-1.x.x/lib/impl/
にmysql-connector-java-5.1.19-bin.jarを置けば動くはずです。
(Googleのバグだと思いますが)
ご教授頂いたパスにjarを置いたら接続できました。ありがとうございました。
質問させて頂いた後にいろいろ試したところ、下記の方法でも動きましたので念のためご連絡いたします。
任意のパスにjarを置いて、Eclipseの「実行構成」→「クラスパス」→「ブートストラップ・エントリー」にjarを追加
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java JavaでWebページ作成 7 2023/07/21 21:09
- Java javaでパソコンの内臓カメラや内臓マイクの映像や音をリアルタイムで映し出した 1 2022/07/09 14:02
- JavaScript JavascriptからSQLへ繋ぎ方が分からない 3 2022/07/07 00:27
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- Java Javaで冪乗を表示したい 2 2022/06/08 00:08
- Java マイクラjavaでForgeを入れたいのですが、インストールした.jarファイルが展開されてしまい中 1 2023/07/28 22:30
- Java mac mini 2009 でのmac OS における Java の入れ替えについて 1 2022/12/27 19:23
- サーバー 別サーバに構築したApache+Tomcatの連携について 2 2023/03/06 23:23
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Microsoft 365 の購入の誘いが...
-
プロダクトキー
-
Python CSVファイルについて
-
MF-COBOL COBOL 違い
-
教えてgoo ログアウト方法
-
Windows serverでマルチキャス...
-
Windowsバッチファイルでリモー...
-
コマンドプロンプトまたはpower...
-
三菱 Got 1000
-
【至急】.htaccessによるディレ...
-
MacのPCでわファイルを検索した...
-
画面設計と帳票設計の違いを教...
-
マイクロソフトから通知メール...
-
バッチファイルで特定のファイ...
-
「ネット検索だけでは十分な情...
-
QRコード運用方法について詳し...
-
昔、銀行の入出金システムを開...
-
企業のサイトのクッキーを許可...
-
アイデア・発想になります。セ...
-
サイトURLの「intl/ja_jp/」に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
MF-COBOL COBOL 違い
-
WindowsからSSHでサーバーにあ...
-
QRコード運用方法について詳し...
-
Microsoft 365 の購入の誘いが...
-
自作pcについて
-
Python CSVファイルについて
-
Windowsバッチファイルでリモー...
-
プロダクトキー
-
バッチファイルで特定のファイ...
-
三菱 Got 1000
-
Windows serverでマルチキャス...
-
マイクロソフトから通知メール...
-
エクセルを起動するとグレーな...
-
おんどとりWebStorage APIから...
-
なにこのQRコード?!!
-
【至急】.htaccessによるディレ...
-
bashでコマンドが見つかりませ...
-
教えてgoo ログアウト方法
-
セルフレジって何の意味がある...
-
コマンドプロンプトまたはpower...
おすすめ情報