- PR -

スイッチを押した時点でメールを送信したい

1
投稿者投稿内容
未記入
会議室デビュー日: 2007/02/03
投稿数: 2
投稿日時: 2007-02-03 14:53
当方、JAVA初心者ですが、どうぞよろしくお願いしますm(__)m


 やりたいことの流れは以下のようになっています。
 ↓
 @RS-232Cを用いたシリアル通信でスイッチの反応を検知する。(Communications API使用)
 ↓
 Aスイッチに反応があり次第、定型文を所定のメールアドレスへ送信する。(JavaMail使用)



ハードウェア(スイッチ)は作成しました。
そして、このページのサンプルプログラムを実行し

http://www.javainthebox.net/JavaForFA/08-09CommAPI/No.08/commapi1.html
@を成し遂げることができました。


メール送信についても、このページを参照し

http://www.atmarkit.co.jp/fjava/javatips/123java022.html
達成することができました。



そして今、「スイッチの反応があったらメールを送る」というプログラムをどのように書いたら良いのかわからず、途方にくれています(涙)
どなたか、ご指導お願い致しますm(__)m
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2007-02-03 18:24
反応を検知することができて、メールの送信ができるなら、
検知したタイミングでメール送信の機能を呼び出せばいいだけだと思いますが、
一体何について分からないのでしょうか?

仕事の丸投げを請け負う場所ではないので、
何について、どのような不明点があるかを整理してください。
何について分からないのかを分からないようでは、
回答する側も何を答えていいのやら分かりません。
質問内容の整理を行うと、疑問点が少しずつでも解決しますよ。
小僧
ぬし
会議室デビュー日: 2002/08/14
投稿数: 526
投稿日時: 2007-02-04 16:19
コード:
if(スイッチが反応したら){
    メールを送信する
}



未記入
会議室デビュー日: 2007/02/03
投稿数: 2
投稿日時: 2007-02-05 13:40
勘違いさせてしまいすみません。
一応以下のとおりにプログラムを組んでみました。
コンパイルは成功したのですが、
「Exception in thread "main" java.lang.NoSuchMethodError: main」
と出てしまい、うまく動作しません。
他のパソコンで再度チャレンジしたところ、うまく実行されていたようです。
なぜわたしの環境下で実行できないのか、不明です。
よろしければどなたかアドバイスをお願い致しますm(__)m
ちなみに、あらかじめ同じフォルダ内に「SerialPortHandler.class」は置いてあります。
また、個人情報は伏せてあります。





import java.io.*;
import java.util.*;
import javax.comm.*;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

public class SerialPortReader extends SerialPortHandler
implements SerialPortEventListener {

protected BufferedReader reader;

public SerialPortReader(String portName){
super(portName);

try {
// SerialPortEvent を受け取るためのリスナの登録
port.addEventListener(this);
} catch(TooManyListenersException ex){
ex.printStackTrace();
System.exit(1);
}

// Data Available イベントを受け取るようにする
port.notifyOnDataAvailable(true);

try {
// 入力用の Reader を生成
reader = new BufferedReader(
new InputStreamReader(port.getInputStream()));
} catch (IOException ex){
ex.printStackTrace();
System.exit(1);
}
}


public void serialEvent(SerialPortEvent event) {
switch(event.getEventType()) {

case SerialPortEvent.BI:
MailTransfer.sendMail();

break;
}
}
}

class MailTransfer {
public static void sendMail() {
Properties objPrp=new Properties();
objPrp.put("mail.smtp.host","xxx.xxx.xxx.xx.jp"); // SMTPサーバ名
objPrp.put("mail.host","xxx.xxx.xxx.xx.jp"); // 接続するホスト名
// メールセッションを確立
Session session=Session.getDefaultInstance(objPrp,null);
// 送信メッセージを生成
MimeMessage objMsg=new MimeMessage(session);
try {
// 送信先(TOのほか、CCやBCCも設定可能)
objMsg.setRecipients(Message.RecipientType.TO,"xxx@xxx");
// Fromヘッダ
InternetAddress objFrm=new InternetAddress("xxx@xxx","xxx xxx");

objMsg.setFrom(objFrm);
// 件名
objMsg.setSubject("メールテスト","ISO-2022-JP");

// 本文
objMsg.setText("こんにちは","ISO-2022-JP");

// メール送信
Transport.send(objMsg);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (MessagingException e) {
e.printStackTrace();
}
}
}

[ メッセージ編集済み 編集者: 未記入 編集日時 2007-02-05 13:44 ]

[ メッセージ編集済み 編集者: 未記入 編集日時 2007-02-05 13:45 ]
NAO
ぬし
会議室デビュー日: 2001/10/24
投稿数: 1256
お住まい・勤務地: 神奈川のはずれから東京の下町
投稿日時: 2007-02-05 14:20
今日は。

引用:

Exception in thread "main" java.lang.NoSuchMethodError: main


読んで字の如くです。
実行時に指定したクラスの中に
mainメソッドが含まれていないと言う事です。
mainメソッドを含んでいるクラスを指定してください

また環境が同じかどうかも確認を。
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2007-02-06 01:08
もう既に、タイトルと問題点が全然違いますよね。
まぁ、まずは通信だのメールだのは置いといて、
Javaの基本からやりましょうよ。

基本が出来れば、いろんなAPIの利用もできるようになりますよ。
1

スキルアップ/キャリアアップ(JOB@IT)