LoginSignup
1
0

More than 3 years have passed since last update.

Java tips - JavaMailでClassNotFoundExceptionが起こったときは依存関係を疑う

Posted at

JavaMailでClassNotFoundExceptionが起こったときは依存関係を疑う

JavaのバッチでJavaMailを使用してメール送信する処理を作成していたら、ClassNotFoundExceptionが起きたので、その時の原因と解決法をまとめる。

原因

原因は単純で読み込むライブラリを間違えていました。
元々はGradleのdependenciesに以下のように書いて、ライブラリを読み込んでいました。

compile group: 'javax.mail', name: 'javax.mail-api', version: '1.6.2'

これで、落ちてくるライブラリは以下のみになります。
javax.mail-api-1.6.2.jar

このライブラリに含まれるクラスは「javax.mail~」に関連するクラスだけになり、メールを送るときにクラス足りなくて怒られる、、、(maven repositoryのdependecyには何も書かれてないが)

改善

以下のように読み込むJavaMailのライブラリを変えます。

compile group: 'com.sun.mail', name: 'javax.mail', version: '1.6.2'

これで落ちてくるライブラリは以下の2つになります。
javax.mail-1.6.2.jar
activation-1.1.jar

この「javax.mail」ライブラリに含まれるクラスは「javax.mail~」関連のクラスと「com.sun.mail~」関連クラスになります。
このライブラリを使用するとClassNotFoundException関連のエラーがすっきりしました。

まとめ

java mail関連のライブラリは似たようなグループ構成でけっこう戸惑ってしまいます。
けっこう動きそうなパッケージ名しているし、すごくわかりにくい、、、

1
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0