- PR -

beep音出力プログラムの挙動に関する疑問

1
投稿者投稿内容
bobry
会議室デビュー日: 2003/11/05
投稿数: 2
投稿日時: 2007-07-04 19:56
bobryと申します。初めての投稿です。よろしくお願いいたします。

WindowsXP Pro(sp2)上で、ビープ音出力を確認するため、下記のコードを作成しました。
コマンドプロンプト画面上で実行した際には、問題なく実行されましたが、Eclipse3.2上で実行した際には、beep音が出力されませんでした。
Eclipseで生成されたclassファイルをコマンドプロンプトから実行した場合は、正常に動作しました。
このような挙動について、どのような原因が考えられるのでしょうか。
ストリームに書き込むbeep音の文字コードに関する理解不足なのでしょうか。

public class BeepTest {
public static void main(String[] args) {
// 2通りでやってみました
System.out.println("¥007");
System.out.write(7);
}
}
小僧
ぬし
会議室デビュー日: 2002/08/14
投稿数: 526
投稿日時: 2007-07-04 22:38
> System.out.println("¥007");

制御コードは、コマンドプロンプトの標準出力に出力すると
コマンドプロンプトがコードを判断して処理するので、
Eclipseのコンソールビューに制御コードを出力してもBEEP音
が出力されないのではないかと。
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2007-07-05 00:48
Eclipseから実行する場合、出力はコンソールビューへリダイレクトされます。
そのとき音が出ないのは、ファイルにBEEPを書き込んでも音が出ないのと同じです。

音が出るのはコマンドプロンプト等が対応しているというだけです。
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2007-07-05 00:58
補足

実際にコードを見たわけではありませんが、リダイレクトという表現だと誤解を招くので。
恐らく挙動を見る限りjava.lang.Runtime/java.lang.Processで起動して、
標準出力とエラー出力を2つのスレッドで拾って書き込んでいるはずです。
bobry
会議室デビュー日: 2003/11/05
投稿数: 2
投稿日時: 2007-07-05 10:49
小僧さま、かつのりさま、ありがとうございました。
コマンドプロンプトとEclipseのコンソールビューの差異について、理解いたしました。
Eclipse上では、
java.awt.Toolkit.getDefaultToolkit.beep();
を記述しておくこととしました。
1

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