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

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

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

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

Eclipse

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

Q&A

解決済

2回答

5747閲覧

javaでのjava.lang.ClassNotFoundException:エラー

Chandler_Bing

総合スコア673

Java

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

Eclipse

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

1グッド

1クリップ

投稿2019/03/04 07:16

表題のところですがエラーが消えません。ドライバー接続の問題でしょうか。
プロジェクト内の参照ライブラリーには、
/Users/yutanakai/Downloads/mysql-connector-java-8.0.13/mysql-connector-java-8.0.13.jar
とドライバーに接続できるようにしています。他ファイルでは上手くいきます。

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

ログイン画面でパスとIDをこのファイルに送信します。
値は入ってきているようです。

java

1package servlet; 2 3import java.io.IOException; 4import java.util.List; 5 6import javax.servlet.RequestDispatcher; 7import javax.servlet.ServletException; 8import javax.servlet.annotation.WebServlet; 9import javax.servlet.http.HttpServlet; 10import javax.servlet.http.HttpServletRequest; 11import javax.servlet.http.HttpServletResponse; 12import javax.servlet.http.HttpSession; 13 14import dao.JavaEnglishDAO; 15import model.Student; 16import model.Teacher; 17 18@WebServlet("/LoginServlet") 19public class LoginServlet extends HttpServlet { 20 private static final long serialVersionUID = 1L; 21 22 protected void doPost(HttpServletRequest request, 23 HttpServletResponse response) 24 throws ServletException, IOException { 25 26 // リクエストパラメータの取得 27 request.setCharacterEncoding("UTF-8"); 28 29 String login = request.getParameter("login"); 30 String signup = request.getParameter("signup"); 31 32 if (signup != null) { 33 RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/jsp/signup.jsp"); 34 dispatcher.forward(request, response); 35 } else if (login != null) { 36 String id = request.getParameter("id"); 37 String pass = request.getParameter("pass"); 38 //値が入ってきているか確認 39 System.out.println(id); 40 System.out.println(pass); 41 42 //ここでJavaEnglishDAOを呼び出す 43 JavaEnglishDAO dao = new JavaEnglishDAO(); 44 Student student = dao.getStudent(id, pass); 45 List<Teacher> teachers = dao.getTeachers(); 46 47 if (student != null && teachers != null) { 48 HttpSession session = request.getSession(); 49 session.setAttribute("student", student); 50 session.setAttribute("student", student); 51 RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/jsp/teacher.jsp"); 52 dispatcher.forward(request, response); 53 } else { 54 RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/jsp/login.jsp"); 55 dispatcher.forward(request, response); 56 } 57 58 } 59 } 60}

こちらがDB操作を扱うjavaファイルです。

JAVA

1package dao; 2 3import java.sql.Connection; 4import java.sql.DriverManager; 5import java.sql.PreparedStatement; 6import java.sql.ResultSet; 7import java.sql.SQLException; 8import java.util.ArrayList; 9import java.util.List; 10 11import model.Student; 12import model.Teacher; 13 14public class JavaEnglishDAO { 15 //Studentを返す 16 public Student getStudent(String id, String pass) { 17 18 Connection conn = null; 19 Student student = null; 20 int rsCount = 0; 21 22 try { 23 // JDBCドライバを読み込む 24 Class.forName("com.mysql.cj.jdbc.Driver"); 25 26 // データベースに接続 27 conn = DriverManager.getConnection("jdbc:mysql://localhost:8889/JavaEnglish", "tennisuser", "password"); 28 System.out.println("has reached"); 29 // SELECT文を準備 30 String sql = "SELECT * FROM students WHERE student_id = ? student_pass = ?"; 31 PreparedStatement pStmt = conn.prepareStatement(sql); 32 pStmt.setString(1, id); 33 pStmt.setString(2, pass); 34 35 // SELECTを実行し、結果表を取得 36 ResultSet rs = pStmt.executeQuery(); 37 38 while (rs.next()) { 39 rsCount = rsCount + 1; 40 } 41 // 一致したユーザーが存在した場合 42 // そのユーザーを表すAccountインスタンスを生成 43 if (rsCount == 1) { 44 String studentid = rs.getString("student_id"); 45 String studentpass = rs.getString("student_pass"); 46 String studentname = rs.getString("student_name"); 47 String studentplan = rs.getString("student_plan"); 48 49 student = new Student(studentid, studentpass, studentname, studentplan); 50 } 51 52 } catch (SQLException e) { 53 e.printStackTrace(); 54 return null; 55 } catch (ClassNotFoundException e) { 56 e.printStackTrace(); 57 return null; 58 } finally { 59 // データベースを切断 60 if (conn != null) { 61 try { 62 conn.close(); 63 } catch (SQLException e) { 64 e.printStackTrace(); 65 return null; 66 } 67 } 68 } 69 // 見つかったユーザーまたはnullを返す 70 return student; 71 } 72 73 public List<Teacher> getTeachers() { 74 75 Connection conn = null; 76 List<Teacher> teachers = new ArrayList<Teacher>(); 77 78 try { 79 // JDBCドライバを読み込む 80 Class.forName("com.mysql.cj.jdbc.Driver"); 81 82 // データベースに接続 83 conn = DriverManager.getConnection("jdbc:mysql://localhost:8889/JavaEnglish", "tennisuser", "password"); 84 85 // SELECT文を準備 86 String sql = "SELECT * FROM teachers;"; 87 PreparedStatement pStmt = conn.prepareStatement(sql); 88 89 // SELECTを実行し、結果表を取得 90 ResultSet rs = pStmt.executeQuery(); 91 92 // そのユーザーを表すTeacherインスタンスを生成しリストに追加 93 while (rs.next()) { 94 teachers.add(new Teacher(rs.getInt("teacher_id"), rs.getString("teacher_name"), rs.getString("major"), 95 rs.getString("sex"))); 96 } 97 98 } catch (SQLException e) { 99 e.printStackTrace(); 100 return null; 101 } catch (ClassNotFoundException e) { 102 e.printStackTrace(); 103 return null; 104 } finally { 105 // データベースを切断 106 if (conn != null) { 107 try { 108 conn.close(); 109 } catch (SQLException e) { 110 e.printStackTrace(); 111 return null; 112 } 113 } 114 } 115 // 見つかったユーザーまたはnullを返す 116 return teachers; 117 } 118}
bochan2👍を押しています

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

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

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

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

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

guest

回答2

0

ドライバー接続の問題でしょうか。

あなた自身の問題です。以上。

投稿2019/03/04 07:23

m.ts10806

総合スコア80850

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

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

0

ベストアンサー

JDBCでClassNotFoundExceptionとmysqlへの接続エラーが解消しません。
一番上のキーワードで検索に"JDBC ClassNotFoundException"って入れると160件ほどヒットします。

投稿2019/03/04 08:56

cateye

総合スコア6851

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

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

cateye

2019/03/04 09:05 編集

mts10806さんも仰っていますが、なぜ自分で解決しようとしないのでしょう? せっかくエラーメッセージが出てるんだから検索しましょう・・・ ※はじめはOSのせいだのドライバのせいだの、はてにはコンパイラが悪いwとかいう考えが頭を過りますが99%自分のせいです。まず、自分を疑いましょう。(自責を込めて)
Chandler_Bing

2019/03/05 06:41

それで検索かけて見ます。
Chandler_Bing

2019/03/10 12:35

お久しぶりです。本日見るとなぜか上手く行ってました。意図的に修正した訳ではないのですが、、、。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問