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

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

新規登録して質問してみよう
ただいま回答率
85.48%
MySQL

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

JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

Java

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

Q&A

解決済

2回答

14510閲覧

eclipseのconsoleのところにjava.lang.ClassNotFoundException: com.mysql.jdbc.Driverがでてしまいます。原因を教えてください。

edoooooo

総合スコア476

MySQL

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

JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

Java

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

0グッド

0クリップ

投稿2015/11/08 05:39

mysqlをつかっています。jspのコードです。どうぞよろしくお願いいたします。

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@page import="java.sql.*"%>

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>server接続</title> </head> <body> <h1>MySQL</h1> <div style='background:whitesmoke;'> <% String msg = ""; try { // ドライバロード Class.forName("com.mysql.jdbc.Driver"); // MySQLに接続 Connection con = DriverManager.getConnection("jdbc:mysql://localhost/mutter", "taichi", "Taichi"); // ステートメント生成 Statement stmt = con.createStatement(); // SQLを実行 String sqlStr = "SELECT * FROM mutter_table"; ResultSet rs = stmt.executeQuery(sqlStr); // 結果行をループ while(rs.next()){ // レコードの値 int id = rs.getInt("user_id"); String name = rs.getString("user_name"); //表示 System.out.println(id + ":" + name); } // 接続を閉じる rs.close(); stmt.close(); con.close(); }catch (ClassNotFoundException e){ msg = "ドライバのロードに失敗しました1"; System.out.println(e); }catch (Exception e){ msg = "ドライバのロードに失敗しました2"; System.out.println(msg); } %> </div> </body> </html>

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

argius

2015/11/08 07:22

確認です。jarファイルのコピー後、tomcatは再起動しましたか?
edoooooo

2015/11/08 07:55

eclipseを消してはいたのですが、 # /etc/rc.d/init.d/tomcat restart での再起動は、していませんでした。 実行してみます。ありがとうございます
guest

回答2

0

ベストアンサー

各アプリケーションのWEB-INF/libなどに置いたライブラリーは、自動で再読み込みが(無効にしていなければ)されますが、共有ライブラリーはされません。(たぶん)

Tomcatを再起動してみてください。


(追記)

コメントのやりとりで解決しましたが、コメントが長いので簡単にまとめます。

(コメントの要約)

以下の手順で、Eclipseが参照しているTomcatを確認したところ、
JDBCドライバーのJARのコピー先のTomcatと、Eclipseで起動したTomcatが異なっていることが分かりました。

Eclipseが使用しているTomcatを確認するには、Eclipseメニューの「ウィンドウ」→「設定」で、「サーバー」という項目を開いてください。
その下に、「ランタイム環境」という項目があります。
その中の「サーバー・ランタイム環境」という欄に、現在Eclipseが参照しているTomcatの情報が表示されています。
1つだけ表示されていたらそれを選択、複数あったらどれでも良いので選択してください。
そして「編集」ボタンを押すと、ダイアログが表示されます。
そこに、どのTomcatを参照しているかが表示されます。

投稿2015/11/08 09:21

編集2015/11/08 15:33
argius

総合スコア9390

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

edoooooo

2015/11/08 10:56

普通にeclipse内で、コンソールの四角ボタンを押して、停止と起動をするだけで良いのでしょうか?
edoooooo

2015/11/08 11:04

java.lang.ClassNotFoundException: com.mysql.jdbc.Driver のエラーは変わりませんでした。すみませんがよろしくお願いします。
argius

2015/11/08 11:05

どうやってTomcatを起動しているかによりますが、追加・修正欄に書いていただいたように/etc/rc.d/init.d/tomcatで起動をコントロールしているのでしたら、/etc/rc.d/init.d/tomcat restartで良いと思います。 Eclipseでサーバー機能を使って起動しているのでしたら、Eclipse内で、コンソールの四角ボタンで停止できます。 「サーバー」というビューが開いているのでしたら、そこに起動中のサーバーが表示されていますので、それを右クリックして「停止」を選択します。四角ボタンでもOKです。
edoooooo

2015/11/08 11:38

四角いボタンをつかって、停止し、右クリックからスタートをしても、おなじ java.lang.ClassNotFoundException: com.mysql.jdbc.Driver という、結果になってしまいます。 コピー先のtomcatのフォルダなのですが、 /Users/endoutaichi/Downloads/apache-tomcat-7.0.65   というものもあり、いままで保存していた、 /Users/endoutaichi/Downloads/tomcat-7.0-doc\ とは、少し違うことに気づきました。mysqlの保存先は、今まで通り、 /Users/endoutaichi/Downloads/tomcat-7.0-doc\でいいのでしょうか?申し訳ありませんが、どうぞよろしくお願いします。
argius

2015/11/08 11:47

なるほど...少し話が見えてきたかも知れません。 もしかして、shared/libにjarをコピーするという情報と、EclipseでTomcatを動かすのに参考にしている情報の情報源が別々だったりしますか?
edoooooo

2015/11/08 11:50

あまり細かい記憶は、ないのですが、一つのことをやるにも、いろいろな手段が、あるように感じ、わかりやすいのを選んで、実行していたので、多分別のものだと思います。毎回、毎回ありがとうございます。
argius

2015/11/08 12:10

承知しました。 話が少し横道にそれますが、 質問する際に、「このサイトを参考にしてサイトの手順通りに構築したのですが上手くいきません」のように質問すると、どういう手順で作業したのかが分かって何が問題なのかが特定しやすくなりますよ。 あと、別々のサイトの情報をつぎはぎしたとすると、それらの情報がかみあっていない可能性もありますよね。なので、できるだけ同じ情報源で一通りできるものを(そしてなるべく新しい情報を)探した方が良いと思います。 閑話休題。 Eclipseが参照しているTomcatが、/usr/local/Cellar/tomcat/8.0.28にあるTomcatかどうかを確認したいです。というのも、Eclipse上からTomcatを個別にインストールすることが可能だからです。 Eclipseメニューの「ウィンドウ」→「設定」で、「サーバー」という項目を開いてください。その下に、「ランタイム環境」という項目があります。 その中の「サーバー・ランタイム環境」という欄に、現在Eclipseが参照しているTomcatの情報が表示されています。 1つだけ表示されていたらそれを選択、複数あったらどれでも良いので選択してください。 そして「編集」ボタンを押すと、ダイアログが表示されます。 そこに、どのTomcatを参照しているかが表示されます。 念のため、間違えて設定を変えないようにダイアログを閉じる場合はキャンセルで閉じてください。
edoooooo

2015/11/08 13:57

ありがとうございます。みてみたところ、 /Users/endoutaichi/Documents/eclipse/apache-tomcat-7.0.65  と書いてありました。 自分が設定していたのは、 /Users/endoutaichi/Downloads/tomcat-7.0-doc\ だったので2つは違うも設定をしていました。
argius

2015/11/08 14:08

なるほど。 そうすると、Eclipseで使用していたのは、HomebrewでインストールしたTomcat 8.0.28ではなく、EclipseでインストールしたTomcat 7.0.65のようですね。 前回と同じように、apache-tomcat-7.0.65の下のlibらしきディレクトリーがあるかどうか探してみてください。 そこにjarをコピーすれば、今回の質問は解決するかも知れません。
edoooooo

2015/11/08 14:35

ありがとうございます。このような文になって、tomcatの新しい方のファイルにjarファイルが入っているのを確認できたのですが、またおなじエラーが出てしまいました。 cp -p mysql-connector-java-5.1.37-bin.jar /Users/endoutaichi/Downloads/apache-tomcat-7.0.65/lib
edoooooo

2015/11/08 14:37

しかし、macのダウンロードというところから、/Users/endoutaichi/Downloads/apache-tomcat-7.0.65/lib を見つけてきたのですが、 いま、もう一度エクリプスのサーバーruntime設定を見てみたところ /Users/endoutaichi/Documents/eclipse/apache-tomcat-7.0.65 このように若干の違いがあったため、やり直してみます。
argius

2015/11/08 14:38

Tomcatの再起動はしたんですよね?
edoooooo

2015/11/08 14:45

cp -p mysql-connector-java-5.1.37-bin.jar /Users/endoutaichi/Documents/eclipse/apache-tomcat-7.0.65/lib このように変更したところ、エラーが java.lang.ClassNotFoundException: com.mysql.jdbc.Driver から、index.jspという、コード内で指定した、 }catch (Exception e){ msg = "ドライバのロードに失敗しました2"; System.out.println(msg); } のところから来ている、 ドライバのロードに失敗しました2 という文字が、コンソールに出るようになりました。JDBCのlibへのコピーは完了したのでしょうか?
argius

2015/11/08 15:01

ClassNotFoundは解消したみたいですね。 よくある話ですが、特に理由が無ければ、Exceptionはスタックトレース(e.printStackTrace())を出すようにしましょう。 現時点では、具体的に何のエラーになっているのか分かりません。 catchの直後にe.printStackTrace();を追加するか、 または、せめてmsg = "ドライバのロードに失敗しました2" + e; (msgの後ろに + e を付ける) にして、エラーの詳細が分かるようにしてください。 こうしておけば、少なくとも現在の練習の時点では、catchを2つ書かなくてもエラーの区別がつくようになります。
edoooooo

2015/11/08 15:16

わかりました。この文を見ながら、コードを直してみます。エラーをインターネットをみながら、さがしてみます。ありがとうございました。
argius

2015/11/08 15:19

こんどこそ、mysql-connector-java-5.1.37-bin.jarが使えるようになったみたいですね。良かったです。
argius

2015/11/08 15:25

コメントが長くなったので、回答欄に要約を追記させていただきます。
edoooooo

2015/11/09 00:14

大変お世話になりました。jarが使えるようになったので、一気にエラーを見つけたいと思います。本当にありがとうございます!
edoooooo

2015/11/09 00:15

わかりやすくまとめていただき、何から何まで。すみません
guest

0

このままコピー&ペーストをしてみましたが 問題なくコンソール状にテーブルの内容が表示されました。
恐らく、eclipseのWEB-INFのlibフォルダにmysql-connector.jarを入れてないものと思われます。

投稿2015/11/08 09:14

soreiyu52

総合スコア10

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

edoooooo

2015/11/08 10:59

回答ありがとうございます。さきほど、教わりながら、コピーの作業を行ったので、一度再起動を試してみます。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問