2017-12-12 6 views
0

自分のプログラムが自分自身にメールを送信しようとしていますが、Javaを使用しています。クラスに関するエラーが発生し続けるSMTP(Java)経由で電子メールを送信しようとしているときにjava.lang.NoClassDefFoundError

Exception in thread "main" java.lang.NoClassDefFoundError: javax/activation/DataHandler at Running.main(Running.java:22)

Caused by: java.lang.ClassNotFoundException: javax.activation.DataHandler

私は取得していますエラーコードのこの行にある:java.lang.ClassNotFoundException: javax.activation.DataHandler

Message msg = new MimeMessage(session);

+0

classpathをmail.jar、activation.jarに対して適切に設定しましたか? –

答えて

0

は、この行を参照してください。つまり、DataHandlerクラスがどこにも見つからず、したがって例外が発生したことを意味します。すばやく検索すると、見つからなかったクラスがJAF (activation.jar)に属することがわかりました。

基本:コンパイル時にファイルが検索される場所はどこですか?

  1. Javaコンパイル中に指定したソースディレクトリ。通常これは、Mavenの場合はpom.xml、Gradleの場合はbuild.gradleのようなビルド構成ファイルによって行われます。

  2. 依存関係は通常定義され、クラスパスに格納されます。クラスパスは、javacコンパイラがいずれのソースファイルでも定義されていないクラスを検索する一連のディレクトリ(またはzipファイル)です。

ブロックを解除クラスパス、follow this for eclipseに欠落しているjarファイルを追加することによって:

  1. あなたのクラスパスにjavax.activation jarファイルを追加し、これはあなたの問題を解決するかどうかを確認してください。

  2. SMTP経由で電子メールを送信しようとしているので、代わりにJavaMail (mail.jar)をクラスパスに追加し、推移的な依存関係のためにactivation.jarが自動的に追加されます。

+0

'javax.activation'を追加するとどういう意味ですか?どのように追加しますか?申し訳ありません..私はこのようなものには新しく、非常に混乱しています。 –

+0

@ lion-man、私の答えで追加されました –

+0

大丈夫、ありがとう、私はそれを持っています! –

関連する問題