- - PR -
サンプル実行時のエラーについて(サーブレット+javamail)
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2008-01-22 14:26
お世話になります。
http://www.atmarkit.co.jp/fjava/rensai2/jspservlet12/jspsevlet12_1.html 上記のページにありますサンプルプログラムを動かすと、以下のエラーメッセージが出力されます。 例外 javax.servlet.ServletException: サーブレットの実行により例外を投げました 原因 java.lang.NoClassDefFoundError: javax/mail/Address servletmail.ServletMail.doPost(ServletMail.java:16) javax.servlet.http.HttpServlet.service(HttpServlet.java:709) javax.servlet.http.HttpServlet.service(HttpServlet.java:802) ServletMail.javaの16行目ではSendMail.javaをnewしています。 SendMail.javaのtransform()メソッドが原因らしいのですが、 サーブレットから呼び出さず、直接smtpなどを指定して実行すると問題なく動くのです。 どこからどう解析していったらいいのかも分からず、お聞きしている次第です。 開発環境は、WindowsXP、Eclipse3.2、Tomcat5.5、javamail1.4です。 同じようなエラーが出たことがある方、ぜひご教授願います。 | ||||
|
投稿日時: 2008-01-22 14:34
jarが足りていないみたいですね。
リンク先を参照すると、以下のように記載があります。 ---- なお、本サンプルを動作させるためには、以下のサイトからJavaMailとJAF(Java Activation Framework)をダウンロードし、あらかじめサーバ環境にインストールしておく必要があります。 ---- | ||||
|
投稿日時: 2008-01-22 14:40
早々のご返答ありがとうございます。
>jarが足りていないみたいですね。 とのことですが、activation.jarのことでしょうか? それならばEclipseのプロジェクトにインポートしてあります。 また、サーブレットを介さず、直接SMTPサーバ、宛先メールアドレスを設定したプログラムは同じプロジェクトの中で問題なく動くのです。 | ||||
|
投稿日時: 2008-01-23 10:46
Eclipseの設定とは、Javaのビルド・パスのライブラリのことですか? NoClassDefFoundErrorは実行時にクラスパスから該当のクラスを見つけられない場合に発生します。 Eclipseの設定ではなく、Webアプリケーション側の実行環境の確認をしてみてください。 実行環境に該当のjarはありますか?たとえば、WEB-INF/lib配下など。 | ||||
|
投稿日時: 2008-01-23 11:37
>Eclipseの設定とは、Javaのビルド・パスのライブラリのことですか?
はい、その通りです。 > 実行環境に該当のjarはありますか?たとえば、WEB-INF/lib配下など。 WEB-INF/lib配下とはLinux環境でのことですよね? WindowsXPだとその場所はどこに当たるのでしょう? \\Tomcat 5.5\\webapps\\ROOT\\WEB-INF\\lib 配下にjarファイルを置いてみたのですが、 見当違いのことをしているようで、実行結果は変わりません。 お恥ずかしい限り、お手数かけて申し訳ないのですが、ご教授願えれば幸いです。 よろしくお願いします。 | ||||
|
投稿日時: 2008-01-23 13:11
どこにアプリを配備しているのでしょうか?参考にしている@ITのサイトを見ましたが、 http://localhost:8080/javatips/mail.html というように起動していると思いますが、コレは同じですか? 仮にあっているとすると、 \Tomcat 5.5\webapps\javatips にサンプルをコピーして動作させている。というのであっていますか? ここまであっているのであれば、 \Tomcat 5.5\webapps\javatips\WEB-INF というフォルダがあると思います。 そこに、libというフォルダがなければフォルダを作成し、そこにmail.jarとactivation.jarをコピーしてみてください。 | ||||
|
投稿日時: 2008-01-23 14:55
>どこにアプリを配備しているのでしょうか?参考にしている@ITのサイトを見ましが、
>http://localhost:8080/javatips/mail.html >というように起動していると思いますが、コレは同じですか? はい、同じです。 >\\Tomcat 5.5\\webapps\\javatips >にサンプルをコピーして動作させている。というのであっていますか? サンプルは、Eclipseのワークスペースにjavatipsというtomcatプロジェクトを作成し、 D:\\Eclipse\\javatips\\WEB-INF\\src にサンプルをコピーして動作させています。 (D:\\EclipseはEclipseのワークスペースです) このjavatipsプロジェクトに外部jarファイルとして mail.jar と active.jar を追加しています。 このプロジェクト内にWEB-INF/lib フォルダはありますが、ここにjarファイルは コピーできません。(コピーしようとするとエラーになります) 先にも記述しましたが、サーブレットを通さず、SendMail.javaを実行すると成功する のです。 GENZOさんのおっしゃる通り、実行環境に該当のjarがないのでしょうが・・・ 理解力が足らず、すみません。 ご助言ありましたら、お願いします。 | ||||
|
投稿日時: 2008-01-23 16:05
GENZOさん、ありがとうございました。
私の勘違いで、Eclipseプロジェクト内のWEB-INF/libにjarファイルをコピペしたら エラーが直りました。 サーブレットを利用する場合は、ここにjarファイルが必要なのですね。 長々とお付き合い下さり、本当にありがとうございました。 |
1