マルシェル新規登録で5000円分当たる

いつもお世話になっております。

メール配信のjavaプログラム実行時、以下のエラーが出ており、原因が分からず苦戦している状況です。
もし同じエラーで格闘し解決された経験のある方がいらっしゃいましたら、ご教授いただけると
幸いです。

以下の内容のバッチプログラムとし、Windowsのタスクスケジューラで実行しています。
C:\abc>cd C:\Program Files\Sample
C:\Program Files\Sample>java program.test1
Exception in thread "main" java.lang.NoClassDefFoundError: javax/mail/Address
at program.test1.main(test1.java:131)

エラー箇所のtest1.javaの131行目は以下の一行です。
test1 mail = new test1();

以前はエラーが出なかったのですが、バージョンアップ等でコンパイルし直した後に発生
するようになりました。色々調べてみましたが、答えの核心に繋がるものが見つかりませんでした。
NoClassDefFoundError の javax/mail/Address はどのようなときに発生するものなのでしょうか。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

エラーは、実行しているJavaVMからjavax.mail.Addressクラスが「見つからない」ので、


それが「見つかる」ようにすればいいわけです。
そのために「クラスパスを通す」必要があるわけですが、やり方として、
・実行時にパスを通す
・環境変数に指定する
という2つの方法があります。

JavaMailの場合、mail.jarとactivation.jarにクラスパスを通す必要があります。
例えば、これらのファイルがC:\javaフォルダに入っている場合
javac -classpath .;C:\java\mail.jar;C:\java\activation.jar program.test1
とすると、test1のプログラムを実行する時に2つのjarファイルにクラスパスが通り、
クラスが見つかるようになります。

ただ、いちいちこれをタイプして実行するのは面倒なので、一般には環境変数に追加します。
WindowsXPの場合、システムのプロパティの環境変数から、
CLASSPATHを選び(なければ新規作成またはPATHを選んでもいい)
値に、mail.jarとactivation.jarを(フルパスで)追加すればJavaVMからは常に、
このパスが「見つかる」ようになります。

参考URL:http://www.hellohiro.com/appli.htm
    • good
    • 0
この回答へのお礼

お礼が遅くなり、申し訳ありません。
お陰さまで、無事解決いたしました。システム環境変数内で activation.jar と mail.jar を
指定していましたが、途中のフォルダパスが間違っているのが原因でした。

なんともお恥ずかしい。この度は適格なアドバイスをいただき、
本当にありがとうございました。

お礼日時:2007/07/11 19:44

実行プログラムがjavax.mail.Addressクラスをロードできないために発生しています。


JavaMailにクラスパスが通っていないためでしょう。

> 以前はエラーが出なかったのですが、バージョンアップ等...
何をどのようにバージョンアップしたのでしょうか。
    • good
    • 0
この回答へのお礼

>>momozange様

早速の返信ありがとうございます。
バージョンアップはこのプログラムではありませんでした。
勘違いで申し訳ありません。無視してください。

重ねての質問となり恐縮ですが、この実行プログラムにJavaMailのクラス
パスを通すというのは具体的にどのようにすれば良いのでしょうか?
importで javax.mail.Address を記載するのでしょうか。それとも
環境変数等の設定が必要なのでしょうか。

お礼日時:2007/06/27 23:12

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qjavax.mailがimportできない

JSPファイルの
import=
のところに
javax.mail.*
を入れると
インポートできないと表示されます。
APIドキュメントを見たら
javax.mailが存在しない。
これはどうすれば対処できるのでしょうか。
どなたか分かる方がいましたら、是非とも教えて頂けると感謝する次第です。
どうぞ宜しくお願い致します。

Aベストアンサー

.;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\lib\mailapi.jar;%JAVA_HOME%\lib\activation.jar;%JAVA_HOME%\lib\j2ee.jar
の中に存在しないものがあるんじゃない?

さっきも言ったけど
J2EEをダウンロードしてこないとダメよ。
JDKの中にはjavax.mailは入ってないから。

Qjavamailでメール送信ができません

javamailでメールを送信しようとすると
エラーが表示されます。
コードとエラー内容http://oshiete.goo.ne.jp/qa/6678667.html
いったい何が原因なのかさっぱりわかりません
パソコンのセキュリティソフトはすべて削除しましたし
ファイアーウォールも無効にしています。

Aベストアンサー

No3の回答が何故「調査中」なのか不明なのですが(単にjavaのプログラムなのに・・・)、
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1443229334
に似たようなプログラムがありますので、見てみてください。

Q『javax.mail.*』が見つかりません。

『javax.mail.*』が見つかりません。
7年ぶりにプログラムを作ることになりました。
JavaMailを使ったソース(送信部分)でimportがエラーになります。
状況は以下の通りです。

1.ソース先頭で『import javax.mail.*』をコーディングしています。
2.javamail-1.4.3.zipのmail.jarにパスを通してあります。
3.jaf-1_1_1.zipのactivation.jarにパスを通してあります。

ここで、『j2ee.jar』を入手してパスを通すため、J2EEをダウンロードしようとしましたが、見つかりません。

4.JAVA EE6をダウンロードしてインストールしたら、glassfishv3が出来ました。
  (JAVA EE6が最新版のようでしたので…)
5.glassfishv3下に『j2ee.jar』が見当たりません。
6.jdk1.6.0_19下にもjre6にもありません。

いろいろとググってみましたが、『j2ee.jarにパスを通す』という回答ばかり見つかります。
『j2ee.jar』の入手方法、もしくは『JAVA EE6に含まれる別のjarで対応』するのか、どなたか御教授お願いいたします。

『javax.mail.*』が見つかりません。
7年ぶりにプログラムを作ることになりました。
JavaMailを使ったソース(送信部分)でimportがエラーになります。
状況は以下の通りです。

1.ソース先頭で『import javax.mail.*』をコーディングしています。
2.javamail-1.4.3.zipのmail.jarにパスを通してあります。
3.jaf-1_1_1.zipのactivation.jarにパスを通してあります。

ここで、『j2ee.jar』を入手してパスを通すため、J2EEをダウンロードしようとしましたが、見つかりません。

4.JAVA EE6をダウンロード...続きを読む

Aベストアンサー

glassfishをインストールしたのであれば、modulesフォルダの中にmail.jarがありますのでこれをクラスパスに追加してみてください。
メール送信についてはこのjarだけで大丈夫だと思います。

QJavaMailのインストール方法

JavaMail をインストールしたいのですが、検索結果から Oracle のページに行くと index ファイルに飛ばされて、JavaMail のダウンロードページに行けません。

どこから JavaMail を入手すればいいのでしょうか?
また、ダウンロードした JavaMail をどのディレクトリにおけばいいのでしょうか?
ご教示お願いします。

Aベストアンサー

こんにちは。


省略して回答して申し訳ございませんでした。

javac -cp .;c:\xxxx\xxx\mail.jar
のように、xxx.jarまで含める必要があります。

Qjavamailで複数人にメールを送信する。

現在javamailを使って複数人の人にメールを送るjspページを作っています。
一人の人にメールを送信することはできたのですが、
複数の宛先に送信する方法がわかりません。
本で調べたところ

void setRecipients(
Message.RecipientType type,
Address[] addresses)
というメソッドで配列で複数のアドレスを指定できる。

とのことなのですが、具体的な方法がわかりません。
どのようにすればよいのでしょうか?
具体的な例などがあったら助かります。
よろしくお願いします。

Aベストアンサー

Addressの配列で複数指定してあげれば、問題ないですね。

new InternetAddress(MAIL_ADDRESS,INTERNET_NAME,ENCODING);
MAIL_ADDRESS:メールアドレス
INTERNET_NAME:メールの名前部分
ENCODING:エンコーディング iso-2022-jpになるのかな?と思います。
これを送信する分Address配列を作って、
setRecipientsにセットします。

私の場合には、ArrayList に入れて、配列に変換しています。
list.add((Address)new InternetAddress・・・・・);
で詰めて、
(Address[])list.toArray(new Address[list.size()]);
で配列に変換

こんな感じでいけるかと思います。

Qpingでポートの指定

pingでIPアドレスを指定して、通信できるかどうかというのは
よく使いますが、pingでポートを指定して応答するかどうかは調べられるのでしょうか?

よろしくお願いします

Aベストアンサー

pingを含むICMPというプロトコルは、OSIの7レイヤで言うところのL2(同一セグメント内通信)とL3(IPルーティングされた通信)の両方にまたがる、ちょっと珍しいプロトコルです。

IPアドレスは指定できますが、別サブネットに属するIPアドレスに到達できればL3通信、できなければゲートウェイと呼ばれる同一サブネットに属する中継装置からの回答を得るという点でL2(MAC通信ではなく、同一セグメント内通信という意味)通信です。

ポート番号はL4で使用されるアドレスですから、L4機能の疎通確認はping(を含むICMP)ではできません。

FTPの疎通確認であれば、クライアントからサーバに対するTCP/21通信(FTP-CMD)が可能であること(サーバからクライアントへのTCP/21からの応答を含む)+サーバからクライアントに対するTCP/20通信(FTP-DATA)が可能であること(クライアントからサーバへのTCP/21からの応答を含む)が必要でしょう。

監視ソフトによるものであれば、
・クライアントからサーバへのログイン(TCP/21)
・クライアントからサーバへのlsの結果(TCP/20)
で確認すればよいでしょう。

pingを含むICMPというプロトコルは、OSIの7レイヤで言うところのL2(同一セグメント内通信)とL3(IPルーティングされた通信)の両方にまたがる、ちょっと珍しいプロトコルです。

IPアドレスは指定できますが、別サブネットに属するIPアドレスに到達できればL3通信、できなければゲートウェイと呼ばれる同一サブネットに属する中継装置からの回答を得るという点でL2(MAC通信ではなく、同一セグメント内通信という意味)通信です。

ポート番号はL4で使用されるアドレスですから、L4機能の疎通確認はping(を含む...続きを読む

QEclipseでのJDBCドライバについて

Eclipse3.1でデータベース(mysql)にアクセスするプログラムを作ったのですが下記のエラーが出ます。

java.lang.ClassNotFoundException: com.mysql.jdbc.Driver

これはJDBCドライバのセットアップがうまく出来ていないからなのでしょうか?
またEclipseでは、~.jarというファイルをプロジェクトのWEB-INFのlibフォルダに入れれば使える印象があるのですが、参考書(EclipseのではなくJAVAなどの)などにあるようにTomcatのインストールフォルダ以下common/libに入れて環境変数を変更しないといけないのでしょうか?

ご存知の方教えてください、よろしくお願いします。

Aベストアンサー

WEB-INF以下に入れると実行はできるのですが、エクリプスが.javaファイルをコンパイルすることができません。projectの一覧を右クリックしてpropertyを選択し、ダイアログ右側からJava Build Pathを選択し、タグからLibrariesを選び、Add JARsボタンをおして.jarファイルを登録して下さい。
たぶんこれでコンパイルできるはずです。

Q「httpステータス404」というエラーが出ます。

「httpステータス404」というエラーが出ます。

java初心者です、宜しくお願い致します。
EclipseでServletを書いてやりましたが、以下のようなエラーが出ます、
原因はなんでしょうか、宜しくお願い致します。
「httpステータス404-/Servlet%E7%B7%B4%E7%BF%92/ ServOutput」

Aベストアンサー

Not Found
という意味です。
そのファイルが無い。あるいはリンクが間違っています。
詳しくは参考URLをみてください。

参考URL:http://ja.wikipedia.org/wiki/HTTP_404

Qjavamailにて連続送信の際のエラー

はじめまして.こんにちわ.
いまjavamailを用いて,メール送信のプログラムを書いています.

しかし,同じアドレスに送信の際に3通に1回程度エラーを返してきます.1通のみですと失敗はないのですが,複数のメールを連続で送るとエラーを返します.
エラーは以下のものになります.
javax.mail.AuthenticationFailedException

これは認証エラーのようですが,同じSMTPを使用しているので,うまく送信できていることもあることから,方法として間違えているのではなく,何か他の部分が悪さをしているのかと思っています.例えば,次のメールがclose する前に connect をかけているのかな,と考えたりしています.そのために,transport.close() が終わった段階で1秒間ほど待つようにしてみたりしたのですが,解決できませんでした.

何か原因として考えられることありましたら,教えていただけないでしょうか.お願いいたします.

また,次に今回用いている送信するクラスをつけます.呼び出す際にはこのクラスのインスタンスをつくり,送信の際にタイトルとメッセージ,添付ファイルを書き換えながら,送信用のメソッドを連続的に呼び出すことで実装しています.

なにぶんjavaはまだ触り初めて日が浅いために,他の部分にて勘違いしている部分などもありましたら,そちらのご指摘もお願いいたします.

はじめまして.こんにちわ.
いまjavamailを用いて,メール送信のプログラムを書いています.

しかし,同じアドレスに送信の際に3通に1回程度エラーを返してきます.1通のみですと失敗はないのですが,複数のメールを連続で送るとエラーを返します.
エラーは以下のものになります.
javax.mail.AuthenticationFailedException

これは認証エラーのようですが,同じSMTPを使用しているので,うまく送信できていることもあることから,方法として間違えているのではなく,何か他の部分が悪さをしているのか...続きを読む

Aベストアンサー

エラーの内容を見る限りでは確かに、認証関連でエラーがでていますね。送信時のエラーに関してはSMTPサーバがAUTH認証を要求してるってことはないでしょうか?
参考URLにJavaMailを利用したAUTH認証を行い送信するサンプルがありますので、一度、実装してみてはいかがでしょうか?それでもエラーがでる様であれば、singletonモデルでテストしてみるのもいいかもしれません。

参考URL:http://www.geocities.co.jp/Playtown/7799/progmemo/javamail_send.htm

QJavaMail,本文中の改行について

現在JavaMailを使用してメールの送信プログラムを作成中です。
メール本文の編集で改行コードを挿入しているのですが、送られたメールは改行されていない状態になっております。
どなたか対処方法をご教示願います。

---------参考コード
StringBuffer contents = new StringBuffer();
contents.append("依頼番号: ").append(reqNo).append(System.getProperty("line.separator"));
String message = contents.toString();
<中略>
mimeMessage.setText(message,"iso-2022-jp");

当方、大変焦っております。なにとぞよろしくお願いします。

Aベストアンサー

参考になるか分かりませんが、
別のクラスを用意して
public static String lineSp(String strA) {
String strB = strA.replaceAll(System.getProperty("line.separator"),"<br />");
return strB;
}

という定番メソッドをつかってます。私の場合。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング