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

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

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

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

Java

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

servlet

Servletとは、Webページの動的な生成やデータ処理などをサーバ上で実行するために、Javaで作成されたプログラムです。 ショッピングサイトやオンラインバンキングといった、動的なウェブサイトの構築に用いられています。

Tomcat

TomcatはApache Software Foundation (ASF)で開発されたオープンソースのWebコンテナです。

Q&A

解決済

2回答

546閲覧

MySQLを用いたjavaサーブレットでcom.mysql.jdbc.Driverがみつからないといわれてしまう

daikon110

総合スコア11

MySQL

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

Java

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

servlet

Servletとは、Webページの動的な生成やデータ処理などをサーバ上で実行するために、Javaで作成されたプログラムです。 ショッピングサイトやオンラインバンキングといった、動的なウェブサイトの構築に用いられています。

Tomcat

TomcatはApache Software Foundation (ASF)で開発されたオープンソースのWebコンテナです。

0グッド

0クリップ

投稿2019/05/30 03:19

javaサーブレットでcom.mysql.jdbc.Driverがみつからないといわれてしまう

tomcatを使ったwebアプリケーションの学習をしているのですが,MySQLでDBとtableを構築し,そのtableをjavaサーブレットを用いてブラウザのページに表示するアプリケーションegilabを書いています.
eclipseなどは用いておらず,すべてターミナル上で行っています.

しかし,プログラムを実行してブラウザで確認してみると,

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

と表示されてしまいます.

サーブレットの名前はEgilabListServlet.javaで,sqlとのやり取りにMySQL Connector/jを用いているので,javacする際は,

javac -cp /usr/share/java/mysql-connector-java.jar:/usr/tomcat9/lib/servlet-api.jar EgilabListServlet.java

としています.

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

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

二行目のエラーはsqlとやり取りができていないために出現するエラーだと思います.

該当のソースコード

EgilabListServlet.java

java

1import java.sql.*; 2import java.io.*; 3import javax.servlet.*; 4import javax.servlet.http.*; 5 6public class EgilabListServlet extends HttpServlet { 7 public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException { 8 response.setContentType("text/html; charset=UTF-8"); 9 PrintWriter out = response.getWriter(); 10 out.println("<html><head>"+"<title>EgilabListServlet</title>"); 11 12 Connection con = null; 13 Statement st = null; 14 ResultSet rs = null; 15 String login = "root"; 16 String passwd = "MySQLのパスワード"; 17 try { 18 Class.forName("com.mysql.jdbc.Driver"); 19 String url = "jdbc:mysql://localhost/egilab_db" + "?useUnicode=true&characterEncoding=UTF-8" + "&autoReconnect=true"; 20 con = DriverManager.getConnection(url, login, passwd); 21 String sql = "SELECT * FROM egilab_tbl;"; 22 23 rs = st.executeQuery(sql); 24 out.println("<table border=\"1\"> "); 25 out.println("<tr><td>name</td>"+"<td>grade</td>"+"<td>group</td></tr>"); 26 27 while (rs.next()) { 28 out.println("<tr><td>" + rs.getString("name")); 29 out.println("</td><td>" + rs.getString("grade")); 30 out.println("</td><td>" + rs.getString("group") + "</td></tr>"); 31 } 32 out.println("</table>"); 33 } catch (Exception e) { 34 out.println("<p>" + e.toString() +"</p>"); 35 } finally { 36 try { 37 rs.close(); 38 st.close(); 39 con.close(); 40 } catch (Exception e) { 41 out.println("<p>" + e.toString() + "</p>"); 42 } 43 } 44 out.println("</body></html>"); 45 } 46}

ディレクトリの構成図は以下の通りです.

/
|
usr
|
tomcat9
|
webapp
|
egilab
|
WEB-INF
|
classes, web.xml
|
EgilabListServlet.java, EgilabListServlet.class

xmlファイルの問題ではないような気がしていますが,web.xmlのソースも以下に示します.

xml

1<?xml version="1.0" encoding="UTF-8"?> 2<!DOCTYPE web-app 3PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" 4"http://java.sun.com/dtd/web-app_2_3.dtd"> 5<web-app> 6 <servlet> 7 <servlet-name>egilab</servlet-name> 8 <servlet-class>EgilabListServlet</servlet-class> 9 </servlet> 10 <servlet-mapping> 11 <servlet-name>egilab</servlet-name> 12 <url-pattern>/servlet/EgilabListServlet</url-pattern> 13 </servlet-mapping> 14</web-app>

次にsqlの中身を記します

mysql> show databases; +--------------------+ | Database | +--------------------+ | egilab_db | | information_schema | | music_db | | mysql | | performance_schema | | sys | +--------------------+ 6 rows in set (0.00 sec)

今回使いたいのはegilab_dbのegilab_tblです

mysql> select * from egilab_tbl; +----------+-------+------------+--------+ | name | grade | group_name | number | +----------+-------+------------+--------+ | Taro | M2 | A | 1 | | Jiro | M1 | B | 2 | | Hanako | M1 | A | 3 | | Saburo | M1 | C | 4 | | Ichiro | | | 5 | +----------+-------+------------+--------+ 5 rows in set (0.01 sec)

試したこと

tomcatの再起動とMySQLの再起動は試したが変わらず.

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

mysql Ver 8.0.16 for Linux on x86_64
Server version: Apache Tomcat/8.5.40
OS:CentoOS7

###よろしくおねがいいたします

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

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

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

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

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

guest

回答2

0

ベストアンサー

おおよそ・・・

/usr/share/java/mysql-connector-java.jar

/usr/tomcat9/lib/mysql-connector-java.jar

にコピーしてください。

たぶんそれだけかと

投稿2019/05/30 03:44

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

投稿2019/05/30 03:33

Orlofsky

総合スコア16415

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

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

退会済みユーザー

退会済みユーザー

2019/05/30 05:53 編集

$(catarina.home}/lib $(catarina.home}/webapps/$(appname}/WEB-INF/lib な話じゃないのか
Orlofsky

2019/05/30 03:58

そっちでしたか。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問