2010-12-29 13 views
1

誰も私がこのJavaプログラムで間違いを犯した場所を教えてもらえますか? 私はこれを実行している間、私はいつも例外をキャッチします。javax.sound.samples library ....で作業中に例外が発生しました。

import java.io.*; 
import javax.sound.sampled.*; 
public class x 
{ 
public static void main(String args[]) 
{ 
    try 
    { 
    File f=new File("mm.wav"); 
    AudioInputStream a=AudioSystem.getAudioInputStream(new FileInputStream(f)); 
    AudioFormat audioFormat = a 
        .getFormat(); 
      DataLine.Info dataLineInfo = new DataLine.Info(
        Clip.class, audioFormat); 
      Clip clip = (Clip) AudioSystem 
        .getLine(dataLineInfo); 
      clip.open(a); 
      clip.start(); 
} 
catch(Exception e) 
{ 
    e.printStackTrace(); 
    System.out.println("exception caught "); 
} 
} 
} 

それが編集

java.io.IOException: mark/reset not supported 
    at java.io.InputStream.reset(InputStream.java:351) 
    at com.sun.media.sound.SoftMidiAudioFileReader.getAudioInputStream(SoftMidiAudioFileReader.java:135) 
    at javax.sound.sampled.AudioSystem.getAudioInputStream(AudioSystem.java:1111) 
    at x.main(x.java:10) 
+0

を例外スタックトレースを投稿、またはあなたが望むください私たちはこのコードを実行する:) ?? –

+0

少なくとも*何*例外がスローされ、スタックトレースからトップダースかそれ以上の行をポストする必要があります。それ以外の場合は、多くの助けを得ることはありません。 –

+0

にjava.io.IOException:マーク/リセットcom.sun.media.sound.SoftMidiAudioFileReader.getAudioInputStream(SoftMidiAudioFileReader.java:135)でjava.io.InputStream.resetで \t(InputStream.java:351) \tをサポートしていません \t at javax.sound.sampled.AudioSystem.getAudioInputStream(AudioSystem.java:1111) \t at x.main(x.java:10) – user528050

答えて

1

この例外がスローされます:あなたのコードをテストした後

を、私は私が与えた(同じエラーに私はあなたのコードに無効なサウンドファイルを与えることをしようとするたびに取得しますそれはテキストファイルとバイナリJavaクラスファイルです:))。毎回同じ例外があります。非常にユーザーフレンドリーな例外ではありませんが、wavファイルの有効性を確認してください。

EDIT#2:

私は、コードを変更する場合:

AudioInputStream a=AudioSystem.getAudioInputStream(
     new BufferedInputStream(new FileInputStream(f))); 

その後、無効なサウンドファイルは、より満足例外与えます:UnsupportedAudioFileException

関連する問題