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

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

ただいまの
回答率

90.76%

  • Java

    13162questions

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

  • MySQL

    5527questions

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

  • Eclipse

    1605questions

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

  • Tomcat

    538questions

サーバではDBに接続不可?

解決済

回答 4

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 205

 前提・実現したいこと

EclipseのTomcatサーバーでMySQLDBに接続できません。

 発生している問題・エラーメッセージ

java.lang.ClassNotFoundException: com.mysql.jdbc.Driver

 該当のソースコード

ソースコードは正常であると思われます。
Javaファイルで、【MySQL接続用のコード】を
public static void main(String[] args)
にいれて、Javaで実行すれば、正常にDBの内容が表示されます。
st.executeQuery("select * from country");

しかしながら、「サーバで実行」すると、エラーメッセージになります。
サーバで実行の場合、
public void doGet (HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException
の中が実行されるものと理解しています。この中にも、上記と全く同じ【MySQL接続用のコード】を入れています。
おそらく、サーバ側(Tomcat)の問題であると思われますが、どうしていいのかわかりません。

Eclipse 4とEclipse 3どちらでやっても同じです。
なにか設定で見落としているところがあるのでしょうか?

package test3;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class Test33 extends HttpServlet {

public static void main(String[] args) {
// TODO 自動生成されたメソッド・スタブ
try {
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/world","root","root");
Statement st = conn.createStatement();
ResultSet rs =
st.executeQuery("select * from country");

while(rs.next()) {
String id = rs.getString(1);
String location = rs.getString(2);
String tid = rs.getString(3);
String time = rs.getString(4);
System.out.println
("ABBREVIATION:"+id+" FULLNAME:"+location+" REGION:"+tid+" SUBREGION:"+time);
}
rs.close();
st.close();
conn.close();
System.exit(0);
} catch (ClassNotFoundException e) {
System.out.println("ドライバを読み込めませんでした "+ e);
} catch (SQLException e) {
System.out.println("データベース接続エラー"+ e);
}

}

public void doGet (HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException
{
response.setContentType("text/html");
PrintWriter writer = response.getWriter();
writer.println("<html>");
writer.println("<head>");
writer.println("<title>Sample Application Servlet Page</title>");
writer.println("</head>");
writer.println("<body bgcolor=white>");
writer.println("<table border=\"0\">");
writer.println("<tr>");
writer.println("<td>");
writer.println("<img src=\"images/tomcat.gif\">");
writer.println("</td>");
writer.println("<td>");
writer.println("<h1>Sample Application Servlet</h1>");
writer.println("This is the output of a servlet that is part of");
writer.println("the Hello, World application.ssss");
writer.println("</td>");
writer.println("</tr>");
writer.println("</table>");

try {
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/world","root","root");
Statement st = conn.createStatement();
ResultSet rs =
st.executeQuery("select * from country");

while(rs.next()) {
String id = rs.getString(1);
String location = rs.getString(2);
String tid = rs.getString(3);
String time = rs.getString(4);
System.out.println
("ABBREVIATION:"+id+" FULLNAME:"+location+" REGION:"+tid+" SUBREGION:"+time);
}
rs.close();
st.close();
conn.close();
System.exit(0);
} catch (ClassNotFoundException e) {
System.out.println("ドライバを読み込めませんでした "+ e);
} catch (SQLException e) {
System.out.println("データベース接続エラー"+ e);
}

}

public void doPost (HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException
{

}

}

 試したこと

JAVAアプリケーションで実行した場合、コンソールに下記のように出ますので、public static void main(String[] args) は正常であると思われます。

ABBREVIATION:VAT FULLNAME:Holy See (Vatican City State) REGION:Europe SUBREGION:Southern Europe
ABBREVIATION:VCT FULLNAME:Saint Vincent and the Grenadines REGION:North America SUBREGION:Caribbean
ABBREVIATION:VEN FULLNAME:Venezuela REGION:South America SUBREGION:South America
ABBREVIATION:VGB FULLNAME:Virgin Islands, British REGION:North America SUBREGION:Caribbean
ABBREVIATION:VIR FULLNAME:Virgin Islands, U.S. REGION:North America SUBREGION:Caribbean
ABBREVIATION:VNM FULLNAME:Vietnam REGION:Asia SUBREGION:Southeast Asia
ABBREVIATION:VUT FULLNAME:Vanuatu REGION:Oceania SUBREGION:Melanesia
ABBREVIATION:WLF FULLNAME:Wallis and Futuna REGION:Oceania SUBREGION:Polynesia
ABBREVIATION:WSM FULLNAME:Samoa REGION:Oceania SUBREGION:Polynesia
ABBREVIATION:YEM FULLNAME:Yemen REGION:Asia SUBREGION:Middle East
ABBREVIATION:YUG FULLNAME:Yugoslavia REGION:Europe SUBREGION:Southern Europe
ABBREVIATION:ZAF FULLNAME:South Africa REGION:Africa SUBREGION:Southern Africa
ABBREVIATION:ZMB FULLNAME:Zambia REGION:Africa SUBREGION:Eastern Africa
ABBREVIATION:ZWE FULLNAME:Zimbabwe REGION:Africa SUBREGION:Eastern Africa

次に、Tomcatサーバで実行した場合、public void doGet (HttpServletRequest request, HttpServletResponse response)が実行されると思いますし、実際にWebページはwriter.printlnで出力したHTMLが表示されるのですが、その後にあるDBの中身の結果は表示されず、
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
とコンソールに出てしまいます。

 補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

回答 4

checkベストアンサー

0

$CATALINA_HOME/commom/lib/にmysql-connector-java-<Version>-bin.jarをコピーして下さい。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2018/04/24 11:21

    ありがとうございます。

    キャンセル

0

ソースコードは正常であると思われます。

接続とSELECTを実行できる最低限の設定やコードを載せてもらわないとエスパーきぼんぬになります。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

0

とりあえず

環境変数 CLASS_PATH は Tomcat は読み込みません。

また

JDBC 4.0(10年程前リリース)では Class.forName は自動化されていて必要ありません。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

0

JDBCドライバーは配置されていますか?
Tomcatプラグインをお使いの場合は、プロジェクト内のWEB-INF/libディレクトリーにJDBCドライバーのJARファイルをコピーして、右クリック→【ビルド・パス】→【ビルド・パスに追加】を実行します。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2018/04/24 11:21

    ありがとうございます。
    Casaganaiさんのやり方でも、スムーズに成功したのですが、Hichonさんのやり方だと、Tomcatサーブレットコンテナそのものに対し、Jarファイルを追加することになるので、そのTomcatを利用するプロジェクト全てにこのJarが適用されることになるので、こちらをベストアンサーにさせていただきました。

    キャンセル

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

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

関連した質問

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

  • Java

    13162questions

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

  • MySQL

    5527questions

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

  • Eclipse

    1605questions

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

  • Tomcat

    538questions