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

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

ただいまの
回答率

90.51%

  • Java

    15834questions

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

  • MySQL

    7002questions

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

  • Eclipse

    1925questions

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

  • Tomcat

    617questions

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

Java Eclipseで動的 Webプロジェクトが正常に動作しない。

解決済

回答 1

投稿 編集

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

kenji267

score 37

eclipseを使用し、javaの学習を進めています。

下記のサイトを参考にeclipseでプロジェクトを作成して動作確認をしようとしています。
[http://stroll.hatenablog.com/entry/2015/11/22/154644]
リンク内容

eclipse、tomcat、MySQLはインストール済みで、
下記バージョン使用で、
jdbcドライバ:mysql-connector-java-8.0.12.jar
Mysql:Ver 8.0.12 for osx10.13 on x86_64 (Homebrew)
プロジェクトを作り、上記を参考にし、実行すると下記のような結果になります。
イメージ説明

時間が経つと以下のメッセージが出ました。
イメージ説明

デバッグすると、
conn = DriverManager.getConnection("jdbc:mysql://localhost/SAMPLEDB", "root", "");
の箇所から、e.printStackTrace();に移動します。

コンソールログは途中で止まっているように思えます(途中は文字数超過のため省略)。

10 23, 2018 10:49:05 午後 org.apache.tomcat.util.digester.SetPropertiesRule begin
警告: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:DBSampleServlet' did not find a matching property.
10 23, 2018 10:49:05 午後 org.apache.tomcat.util.digester.SetPropertiesRule begin
警告: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:TodoServlet' did not find a matching property.
10 23, 2018 10:49:05 午後 org.apache.catalina.startup.VersionLoggerListener log
情報: Server version:        Apache Tomcat/8.0.53
10 23, 2018 10:49:05 午後 org.apache.catalina.startup.VersionLoggerListener log
情報: Server built:          Jun 29 2018 14:42:45 UTC
10 23, 2018 10:49:05 午後 org.apache.catalina.startup.VersionLoggerListener log
情報: Server number:         8.0.53.0
10 23, 2018 10:49:05 午後 org.apache.catalina.startup.VersionLoggerListener log
情報: OS Name:               Mac OS X
10 23, 2018 10:49:05 午後 org.apache.catalina.startup.VersionLoggerListener log
情報: OS Version:            10.13.6
10 23, 2018 10:49:05 午後 org.apache.catalina.startup.VersionLoggerListener log
情報: Architecture:          x86_64
10 23, 2018 10:49:05 午後 org.apache.catalina.startup.VersionLoggerListener log
情報: Java Home:             /Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/jre
10 23, 2018 10:49:05 午後 org.apache.catalina.startup.VersionLoggerListener log
情報: JVM Version:           1.8.0_181-b13
10 23, 2018 10:49:05 午後 org.apache.catalina.startup.VersionLoggerListener log
情報: JVM Vendor:            Oracle Corporation
10 23, 2018 10:49:05 午後 org.apache.catalina.startup.VersionLoggerListener log
情報: CATALINA_BASE:         /Users/sawada/eclipse-workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0
10 23, 2018 10:49:05 午後 org.apache.catalina.startup.VersionLoggerListener log
情報: CATALINA_HOME:         /Applications/apache-tomcat-8.0.53
10 23, 2018 10:49:05 午後 org.apache.catalina.startup.VersionLoggerListener log
情報: Command line argument: -Dcatalina.base=/Users/sawada/eclipse-workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0
10 23, 2018 10:49:05 午後 org.apache.catalina.startup.VersionLoggerListener log
情報: Command line argument: -Dcatalina.home=/Applications/apache-tomcat-8.0.53
10 23, 2018 10:49:05 午後 org.apache.catalina.startup.VersionLoggerListener log
情報: Command line argument: -Dwtp.deploy=/Users/sawada/eclipse-workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps
10 23, 2018 10:49:05 午後 org.apache.catalina.startup.VersionLoggerListener log
情報: Command line argument: -Djava.endorsed.dirs=/Applications/apache-tomcat-8.0.53/endorsed
10 23, 2018 10:49:05 午後 org.apache.catalina.startup.VersionLoggerListener log
情報: Command line argument: -Dfile.encoding=UTF-8
10 23, 2018 10:49:05 午後 org.apache.catalina.core.AprLifecycleListener lifecycleEvent
略
10 23, 2018 10:49:05 午後 org.apache.coyote.AbstractProtocol init
情報: Initializing ProtocolHandler ["http-nio-8080"]
10 23, 2018 10:49:05 午後 org.apache.tomcat.util.net.NioSelectorPool getSharedSelector
情報: Using a shared selector for servlet write/read
10 23, 2018 10:49:05 午後 org.apache.coyote.AbstractProtocol init
情報: Initializing ProtocolHandler ["ajp-nio-8009"]
10 23, 2018 10:49:05 午後 org.apache.tomcat.util.net.NioSelectorPool getSharedSelector
情報: Using a shared selector for servlet write/read
10 23, 2018 10:49:05 午後 org.apache.catalina.startup.Catalina load
情報: Initialization processed in 827 ms
10 23, 2018 10:49:05 午後 org.apache.catalina.core.StandardService startInternal
情報: サービス Catalina を起動します
10 23, 2018 10:49:05 午後 org.apache.catalina.core.StandardEngine startInternal
情報: Starting Servlet Engine: Apache Tomcat/8.0.53
10 23, 2018 10:49:05 午後 org.apache.jasper.servlet.TldScanner scanJars
情報: At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
10 23, 2018 10:49:06 午後 org.apache.jasper.servlet.TldScanner scanJars
略
情報: Starting ProtocolHandler ["http-nio-8080"]
10 23, 2018 10:49:06 午後 org.apache.coyote.AbstractProtocol start
情報: Starting ProtocolHandler ["ajp-nio-8009"]

10 23, 2018 10:49:06 午後 org.apache.catalina.startup.Catalina start
情報: Server startup in 1223 ms
com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Client does not support authentication protocol requested by server; consider upgrading MySQL client
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:406)
    at com.mysql.jdbc.Util.getInstance(Util.java:381)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:984)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3558)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3490)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:919)
    at com.mysql.jdbc.MysqlIO.secureAuth411(MysqlIO.java:3996)
    at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1284)
    at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2142)
    at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:781)
    at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:46)
    at 
略

一応ソースは下記になります(参考にしたサイトとほとんど同じです)
文字数制限のため一部省きます。上記参考サイトをご覧ください。

package chapter6;

略

/**
 * Servlet implementation class SelectSampleServle
 */
@WebServlet("/SelectSampleServlet")
public class SelectSampleServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public SelectSampleServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
     *      response)
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        // TODO Auto-generated method stub
        java.sql.Connection conn = null;
        Statement stmt = null;
        ResultSet rs = null;
        ArrayList<String> list = new ArrayList<String>();
        try {
            Class.forName("com.mysql.jdbc.Driver");
            conn = DriverManager.getConnection("jdbc:mysql://localhost/SAMPLEDB", "root", "");

            stmt = conn.createStatement();
            rs = stmt.executeQuery("Select * from student");

            while (rs.next()) {
                String s = "<td>" + rs.getInt(1) + "</td>" + "<td>" + rs.getString(2) + "</td>" + "<td>" + rs.getInt(3)
                        + "</td>";
                list.add(s);
            }
        } catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
        } finally {
            if (rs != null) {
                try {
                    rs.close();
                } catch (SQLException sqlEx) {

                }
            }
            if (conn != null) {
                try {
                    conn.close();
                } catch (SQLException sqlEx) {

                }
            }
        }
  略
}


こちらはデータが表示されます。

package chapter6;

import java.sql.*;

public class MySqlTest {

    public static void main(String[] args) {
        Connection con = null;
        try {
            // JDBCドライバのロード - JDBC4.0(JDK1.6)以降は不要
            Class.forName("com.mysql.jdbc.Driver").newInstance();
            // MySQLに接続
            con = DriverManager.getConnection("jdbc:mysql://localhost/SAMPLEDB", "root", "");
            System.out.println("MySQLに接続できました。");

            Statement stm = con.createStatement();
            String sql = "Select * from student";
            ResultSet rs = stm.executeQuery(sql);

            while(rs.next()){
                int id = rs.getInt("STUDENTNO");
                String name = rs.getString("STUDENTNAME");
                System.out.println("取得結果 -> " + id + ":" + name);
            }


        } catch (InstantiationException | IllegalAccessException | ClassNotFoundException e) {
            System.out.println("JDBCドライバのロードに失敗しました。");
        } catch (SQLException e) {
            System.out.println("MySQLに接続できませんでした。");
        } finally {
略 
       }
    }


}

tomcatを通してdbに繋がらないと思われませすが、
tomcatは起動しているように見えますがdbに繋がらないのをどうやって解決したらいいかわかりません。

ご教授いただけると助かります。
宜しくお願いします。

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

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

質問への追記・修正、ベストアンサー選択の依頼

  • RYNO

    2018/10/23 23:14

    編集ありがとうございます。例外のメッセージを見るとMySQLの認証関係のエラーのように見えます。getConnection()の3つの引数(url, user, password)に誤りはありませんか?

    キャンセル

  • kenji267

    2018/10/23 23:45 編集

    webを通さないプログラムではデータが表示されます(getConnection()の引数は同じです)。
    (そのプログラムを追記しました)

    キャンセル

  • kenji267

    2018/10/24 00:08 編集

    別に回答を頂き、接続クラス名の変更が必要でした。

    キャンセル

回答 1

checkベストアンサー

+2

動作が改善するかは検証できていませんが、MySQL8版のconnector/jは、接続クラス名が変更になっています。

参照されている記事は、MySQL Connector/Jが5.1ですので、MySQLのバージョンは5.5系ではないかと推測されます。

https://dev.mysql.com/doc/connector-j/8.0/en/connector-j-api-changes.html

The name of the class that implements java.sql.Driver in MySQL Connector/J has changed from com.mysql.jdbc.Driver to com.mysql.cj.jdbc.Driver. The old class name has been deprecated.

クラス名を com.mysql.cj.jdbc.Driver に変えてみてください。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2018/10/24 00:05

    データが表示されました!!
    勉強になりました。ありがとうございます。

    キャンセル

  • 2018/10/24 00:47

    d(・ω・ 8系はこういうところもかなり変わってます!

    キャンセル

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

  • Java

    15834questions

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

  • MySQL

    7002questions

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

  • Eclipse

    1925questions

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

  • Tomcat

    617questions

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