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

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

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

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

Java

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

Q&A

解決済

3回答

15739閲覧

【Java】メイン・クラス”クラス名”が見つからなかったかロードできませんでした

yuichikubo

総合スコア12

MySQL

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

Java

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

0グッド

0クリップ

投稿2016/09/10 00:55

###前提・実現したいこと
javaでMySQLに接続してデータ表示を行いたいです。

JDBCドライバはインストール済で、環境変数のユーザ環境変数にてクラスパスは設定済です。
変数名:CLASSPATH
変数値:.;c:¥memo¥lib¥mysql-connector-java-5.1.39-bin.jar

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

C:¥memo¥JDBC>javac -encoding UTF-8 JdbcTest.java ↓ C:¥memo¥JDBC>java JdbcTest エラー: メイン・クラスJdbcTestが見つからなかったかロードできませんでした

###該当のソースコード

import java.sql.*; //java.sqlパッケージのインポート// class JdbcTest{ public static void main(String[] args){ Connection conn = null; Statement stmt = null; ResultSet rs = null; //3つのオブジェクトを初期化// try{ Class.forName("com.mysql.jdbc.Driver"); /*クラスローダによりJDBCドライバを読み込んでいることを示している。 引数は、データベースにアクセスするためのJDBCドライバのクラス名である*/ String strConn = "jdbc:mysql://localhost/memo" +"?user = root&password = ky890703"; //コネクション文字列作成// conn = DriverManager.getConnection(strConn); //DriverManagerクラスのgetConnectionメソッドを使ってデータベースに接続する// stmt = conn.createStatement(); /*データベースの接続後に、sql文をデータベースに直接渡すのではなく、 sqlコンテナの役割を果たすオブジェクトに渡すためのStatementオブジェクトを作成する*/ String strSql = "SELECT * FROM USER"; //SQL文作成// rs = stmt.executeQuery(strSql); //問合せ文の実行// while(rs.next()){ int userId = rs.getInt("USER_ID"); String password = rs.getString("PASSWORD"); String userName = rs.getString("USER_NAME"); System.out.println(userId+":"+password+":"+userName); //getInt()&getString()メソッドは、引数に指定されたフィールド名(列)の値をint&Stringとして取得する// } }catch(Exception e){ e.printStackTrace(); //全ての例外をキャッチしている// }finally{ try{rs.close();}catch(SQLException e){e.printStackTrace();} try{stmt.close();}catch(SQLException e){e.printStackTrace();} try{conn.close();}catch(SQLException e){e.printStackTrace();} //データベースオブジェクトをクローズしている// } } }

###試したこと
・クラスパスに間違いがないか確認。また-cpを使ったクラスパス指定でもやってみましたが、エラー。
・javacにてコンパイルされたクラスファイルはカレントディレクトリ(C:¥memo¥JDBC)にあることの確認。

###補足情報(言語/FW/ツール等のバージョンなど)
より詳細な情報

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

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

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

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

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

kozzy

2016/09/10 01:19 編集

環境変数を消して、cpも指定せず実行(java)するとエラーの内容は変わりますか? ソースのimportの前にpackageは指定されていませんか?
yuichikubo

2016/09/10 01:53

ありがとうございます。 環境変数を消して、cpも指定せずやってみましたが、同じエラーが出ました。 ちなみにpackageはしておりません。
guest

回答3

0

補足として

1.恐らくご存知と思いますが、ユーザー環境変数を変更しても既に起動中のコマンドプロンプトには反映されません。
2.うろ覚えですが、一旦ログアウトしないとXpでは反映されなかったような気もします。
3.システム環境変数に設定されている可能性はありませんか。
4.最終手段として、regeditで原因となったカレントディレクトリの無いパス文字列を検索するとどこで設定されているかが分かると思います。

投稿2016/09/10 03:47

kozzy

総合スコア30

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

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

yuichikubo

2016/09/10 03:53

ありがとうございます。 コマンドプロンプトにて set CLASSPATH=.;%CLASSPATH% を実行したらカレントディレクトリへパスも通るようになりました! ご指示いただいたことも試してみたいと思います。
guest

0

ベストアンサー

javaの設定の問題だとおもわれますが、以下の例は実行できますか?

lang

1public class Test { 2 3 public static void main(String[] args) { 4 System.out.println("Hello."); 5 } 6 7}
C:\temp\test>javac Test.java C:\temp\test>java Test Hello. C:\temp\test>

投稿2016/09/10 02:27

java-beginner

総合スコア452

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

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

yuichikubo

2016/09/10 02:37

ありがとうございます。 仰るとおりこれでも同じエラーが出てしまいました。以前は普通に表示されていたのですが。。 この場合どこを確認すればよろしいのでしょうか?
java-beginner

2016/09/10 02:50

コマンドプロンプトで「set」を打つと環境変数の一覧が出ます。 そのときのCLASSPASSが変になっているのでしょうか?
yuichikubo

2016/09/10 02:59

ありがとうございます。 CLASSPATH=C:\memo\lib\mysql-connector-java-5.1.39-bin.jar になっております。
java-beginner

2016/09/10 03:06

これだとカレントディレクトリへのパスが通ってないので? どこかでクラスパスを上書きしてませんか?
yuichikubo

2016/09/10 03:12

確かにそうですね。 環境変数のユーザ環境変数では確かに 変数名:CLASSPATH 変数値:.;C:\memo\lib\mysql-connector-java-5.1.39-bin.jar になっているのですが。。 これを上書きされる可能性はどこならありうるのでしょうか?
yuichikubo

2016/09/10 03:19

コマンドプロンプトにて set CLASSPATH=.;%CLASSPATH% を実行したらカレントディレクトリへパスも通るようになりました! ありがとうございます!
java-beginner

2016/09/10 03:25

プロンプトはバッチファイルで立ち上げてるのでしょうか?そこでクラスパスを上書きしているという可能性は?
yuichikubo

2016/09/10 03:29

いえそのようなファイルは作成していません。なぜなのでしょうかね? ちなみにクラスパスは通ったようなのですが、新しく下記のような表示になってしまいました。 また別の問題ですよね? Sat Sep 10 12:17:02 JST 2016 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification. java.sql.SQLException: Access denied for user ''@'localhost' (using password: NO) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:963) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3966) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3902) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:875) at com.mysql.jdbc.MysqlIO.proceedHandshakeWithPluggableAuthentication(MysqlIO.java:1712) at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1228) at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2253) at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2284) at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2083) at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:806) at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) at java.lang.reflect.Constructor.newInstance(Unknown Source) at com.mysql.jdbc.Util.handleNewInstance(Util.java:404) at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:410) at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:328) at java.sql.DriverManager.getConnection(Unknown Source) at java.sql.DriverManager.getConnection(Unknown Source) at JdbcTest.main(JdbcTest.java:20) Exception in thread "main" java.lang.NullPointerException at JdbcTest.main(JdbcTest.java:45)
java-beginner

2016/09/10 03:41

今度はMySQLとの兼ね合いの問題だと思います。 ここからは、私にはわかりません。
yuichikubo

2016/09/10 03:49

わかりました。 ご丁寧にご回答いただきましてありがとうございました!
mit0223

2016/09/10 04:26

うーん、そういう結末でしたか。しかし、 -cp .;c:¥... とした時にはどうして動かなかったんでしょうか。手元(Mac OS)でテストした時は、環境変数が間違っていても -cp で指定すると動いたんですが・・・
guest

0

カレントディレクトリの JdbcTest.class を見つけられていません。

以下のことを思いついて回答しましたが、誤りでした。
Windows ではクラスパスはセミコロンで区切るので正解です。


変数名:CLASSPATH

変数値:.;c:¥memo¥lib¥mysql-connector-java-5.1.39-bin.jar

クラスパスはセミコロン(;)ではなく、コロンで区切ってください。

.:c:¥memo¥lib¥mysql-connector-java-5.1.39-bin.jar

投稿2016/09/10 01:38

編集2016/09/10 03:02
mit0223

総合スコア3401

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

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

yuichikubo

2016/09/10 01:54

ありがとうございます。 セミコロンからコロンに変えてみたのですが、同じエラーが表示されてしまいました。
mit0223

2016/09/10 02:34

すみません間違えました。Windows ですね。セミコロンで正解です。ただ、エラーメッセージからすると、カレントディレクトリを検索できてないと思います。
yuichikubo

2016/09/10 02:48

ありがとうございます。他の方のご指摘で気が付いたのですが、以前は簡単な文字の出力ができていたのに、今できなくなっていました。。おそらくjavaの設定が変わってしまっているのだと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問