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

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

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

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

Java

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

サーブレット

サーブレット(Servlets)とはウェブやアプリケーションサーバー上に動くプログラムのことであり、ウェブブラウザや他のHTTPクライエントとデータベースやHTTPサーバー上のアプリケーションの中間層としての働きをします。

Eclipse

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

Q&A

解決済

1回答

2731閲覧

サーブレット/MySQLの接続でClass.forName()でClassNotFoundExceptionが発生する問題の解消

minman

総合スコア6

MySQL

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

Java

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

サーブレット

サーブレット(Servlets)とはウェブやアプリケーションサーバー上に動くプログラムのことであり、ウェブブラウザや他のHTTPクライエントとデータベースやHTTPサーバー上のアプリケーションの中間層としての働きをします。

Eclipse

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

0グッド

0クリップ

投稿2019/08/20 13:04

前提・実現したいこと

現在Javaの学習中で、サーブレットとDBのアクセスを行ってみたいと思っています。
mysqlで作成したDBにアクセスしてデータを使えるようにしたいです。
Eclipseを使って開発を進めているのですが、以下のエラーが発生しています。

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

java.lang.ClassNotFoundException: con.mysql.jdbc.Driver at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1364) at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1185) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:264) at web.ServletName.main(ServletName.java:70) at web.ServletName.doPost(ServletName.java:53) at javax.servlet.http.HttpServlet.service(HttpServlet.java:660) at javax.servlet.http.HttpServlet.service(HttpServlet.java:741) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:493) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81) at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:660) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343) at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:798) at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:808) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1498) at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:748)

該当のソースコード

package web; import java.io.IOException; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.fasterxml.jackson.databind.ObjectMapper; /** * Servlet implementation class Schedule */ @WebServlet("/ServletName") public class ServletName extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public ServletName() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { main(request, response); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { main(request, response); } protected String main(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { Connection conn = null; String a = request.getParameter("a"); String b = null; try { Class.forName("con.mysql.jdbc.Driver"); conn = DriverManager.getConnection(url, user, password); String sql = "SELECT * FROM TABLE WHERE COLUM = ?"; PreparedStatement ps = conn.prepareStatement(sql); ps.setString(1, a); ResultSet rs = ps.executeQuery(); while (rs.next()) { b = rs.getString("COLUMN-NAME") } } catch (SQLException e) { System.out.println("SQLException:" + e.getMessage()); } catch (ClassNotFoundException { e.printStackTrace(); } return b; } }

試したこと

・DBViewerで作成したDBにアクセスできることを確認しました。
・プロジェクトのプロパティ→ビルドパス→外部jarの追加からmysql-connector-java-8.0.17.jarを選択してパスを通しました。
・WEB-INF/libの中にも一応同じjarファイルを入れました。

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

変数の定義や文字列の処理など関係のない部分を省いたので、エラーメッセージの行数とソースの行数が一致しないのですが、発生しているのはClass.forName("con.mysql.jdbc.Driver")の行で間違いないです。
調べて分かった事は試したのですが、解決に至らなかったのでまだ試せていないことがあればお聞かせ願えればと思い質問致しました。

現在サーブレットについて自主的に学習しているだけなので、解決しなければどうということはないのですが
出来ればこのままDBとのデータのやり取りを行いながら学びたいと考えています。

お力添えいただきますようお願いします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

java

1// 誤 2Class.forName("con.mysql.jdbc.Driver"); 3 4//正 5Class.forName("com.mysql.jdbc.Driver");

nとmを間違えたのでは?

投稿2019/08/20 13:06

swordone

総合スコア20651

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

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

minman

2019/08/20 13:14

あああ申し訳ないです本当にその通りでした。。。お恥ずかしい限りです。。。 サイトのコピペでそのまま信用しきっていたので完全に見落としていました。 迅速なご回答ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問