私は日食からデータベースに接続するとき、次の例外を取得し続けます。
java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at connection.ConnectionFactory.<init>(ConnectionFactory.java:29)
at connection.ConnectionFactory.<clinit>(ConnectionFactory.java:25)
at dao.StudentDAO.insert(StudentDAO.java:53)
at bll.StudentBLL.insertStudent(StudentBLL.java:39)
at start.Start.main(Start.java:23)
しかし、接続が確立されていますデータベースから読み取ると、私はそれを書くことができますが、例外は消えません。 mysql-connector-java-5.1.45-binをビルドパスでパスファイルに追加し、ライブラリセクションに表示されます。 私はDBに書き込むことができるので、URL、ユーザ、パスワードは正しく書かれていると思います。 接続は以下によって確立されます。
try {
connection = DriverManager.getConnection("jdbc:mysql://localHost:3306/schooldb","root","");
} catch (SQLException e) {
LOGGER.log(Level.WARNING, "An error occured while trying to connect to the database");
e.printStackTrace();
}
return connection;
}
ドライバのコードは次のとおりです。
private static final String DRIVER = "com.mysql.cj.jdbc.Driver";
try {
Class.forName(DRIVER);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
私はMavenプロジェクトでeclipse Oxygenを使って作業しています。 データベースはMYSQLWorkbench 6.0CEで作成されます。
しかし、私はドライバーに何が間違っているのか分からない。
回答:
回答№1は0あなたのドライバ名が間違っていると思います ここで私が使用しているドライバは、試してみてください
com.mysql.jdbc.Driver
ローカルホストの "H"も小文字にする
上記の解決策が機能しない場合:
1:インポートを削除する com.mysql.cj.jdbc.*
2:このドライバを使用する private static final String DRIVER = "com.mysql.cj.jdbc.Driver";
回答№2の場合は0
問題は、ドライバクラス名を使用するMySQL Connector / J 5.1.45ドライバを使用していることです com.mysql.jdbc.Driver
新しいMySQL Connector / J 8.xドライバで導入されたドライバクラス名をロードしようとします。
MySQL Connector / J 8.0.11へのアップグレード( https://dev.mysql.com/downloads/connector/j/)、または - 現在5.1.45を引き続き使用したい場合は - を使います
private static final String DRIVER = "com.mysql.jdbc.Driver";
また、下位互換性のために、MySQL Connector / J 8.xは上記のクラスをロードするために保持しています。
技術的には、このようにドライバーをロードすることは、JDBC 4以上の自動ドライバーのロードのために、多くの状況で必要ですらありません。