java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver 例外の解決

 

目次

質問

理由

解決


        現在、DB同期ツールを開発する際、オリジナルのjdbcDriverを使用してデータベースをリンクするため、コードは次のようになります。「Class.forName(this.jdbcDriver);」、ここでの構成は「"jdbcDriver":"com.mysql」です。 .cj.jdbc.Driver" " の場合、プログラムがこの行に到達すると、エラー「 java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver 」が報告されます。そのとき、明らかな依存関係や設定があるにもかかわらず、なぜ対応するクラスが見つからないのか疑問に思いました。次に、この問題を解決する方法を見てみましょう。

質問

        プログラムが「Class.forName(this.jdbcDriver);」に対して実行されると、次のエラーが報告されます。

java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver
	at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
	at java.lang.Class.forName0(Native Method)
	at java.lang.Class.forName(Class.java:264)

理由

        トラブルシューティング後、問題は解決され、その理由がここに直接記録されます。

  1. MySQL JDBC ドライバーが見つかりません: このエラーは通常、MySQL JDBC ドライバーが適切に構成されておらず、アプリケーションにロードされていない場合に発生します。プロジェクトが正しく構成されていること、および MySQL JDBC ドライバー (mysql-connector-java.jar ファイルなど) がクラスパス上にあることを確認してください。

  2. クラスパスの問題: MySQL JDBC ドライバーがクラスパスの外にある場合、または適切にアクセスできない場合にも、ClassNotFoundException が発生する可能性があります。クラスパス設定を確認し、MySQL JDBC ドライバーにアクセスして正しくロードできることを確認してください。

  3. バージョンの不一致: 互換性のないバージョンの MySQL JDBC ドライバーを使用しようとすると、ClassNotFoundException が発生する場合もあります。MySQL JDBC ドライバーのバージョンがアプリケーションおよび MySQL データベースのバージョンと互換性があることを確認してください。

  4. コンパイル エラー: コンパイル中に問題が発生した場合にも、ClassNotFoundException が発生します (インポート修飾子エラー、ドライバーが存在しないなど)。コンパイル前およびコンパイル中に、コードと依存関係を注意深く確認してください。

回避策には次のようなものがあります。

  • MySQL JDBC ドライバーが適切に構成およびロードされていること、およびクラスパス上にあることを確認してください。
  • クラスパス設定をチェックして、MySQL JDBC ドライバーにアクセスして正しくロードできることを確認します。
  • MySQL JDBC ドライバーのバージョンがアプリケーションおよび MySQL データベースのバージョンと互換性があることを確認してください。
  • コンパイル中にエラーがないか確認し、修正してください。
  • 上記のいずれも機能しない場合は、アプリケーションと MySQL データベースのバージョンに応じた MySQL JDBC ドライバーを再ダウンロードしてインストールしてみてください。

解決

私自身のプロジェクトの理由は、「3. バージョンの不一致」の問題によるものです。調査の結果、「mysql-connector-java.jar」パッケージの 5XX 以降のバージョン パスは「com.mysql.jdbc.Driver」、6XX 以降のバージョン パスは「com.mysql.cj」であることがわかりました。 .jdbc.ドライバー」。バージョンパッケージは自分で削除できます。

この知識がお役に立てば幸いです

おすすめ

転載: blog.csdn.net/lly576403061/article/details/131461953