使用javax.sound.samples库时发生异常。。。。!

使用javax.sound.samples库时发生异常。。。。!,java,audio,Java,Audio,谁能告诉我这个java程序哪里出错了。 运行此操作时,我总是捕获异常 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 FileInputS

谁能告诉我这个java程序哪里出错了。 运行此操作时,我总是捕获异常

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)
编辑:

在测试代码之后,每次尝试为代码提供无效的声音文件(我为代码提供了文本文件和二进制java类文件:)时,都会出现相同的错误。我每次都有同样的例外。这不是一个非常用户友好的异常,但是请检查wav文件的有效性

编辑#2:

如果我将代码更改为:

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

然后,一个无效的声音文件将给出一个更令人愉快的异常:
不支持的音频文件异常

在同一个问题上绊倒,跳入 javax.sound.sampled.AudioSystem.getAudioInputStream(AudioSystem.java:1113) 那里的代码询问提供者是否可以处理声音格式,并捕获UnsupportedAudioFileException以继续下一个提供者。代码注释状态为“抛出IOException”,当AudioSystem尝试提供程序时,IOException发生 com.sun.media.sound.softmidiaAudioFileReader 是的,提供程序抛出UnsupportDaudioFileException,但在这样做之前,它会在输入流上调用“reset()”。我通过标准URL.openStream()使用包资源,URL流不支持reset(),并在SoftMidiaAudioFileReader抛出UnsupportedAudioFileException之前抛出IOException

类AudioSystem中的错误:捕获UnsupportDaudioFileException,并继续下一个提供程序,而不必要的IOException中止所有其他提供程序

你的stacktrace显示你进入了同一个bug。
尚未找到解决方法。

请发布异常stacktrace,或者您希望我们运行此代码:)?您至少需要发布引发的异常以及堆栈跟踪中的前十几行。否则,您将不会得到太多帮助。java.io.IOException:com.sun.media.sound.SoftmidiaAudioFileReader.getAudioInputStream(SoftmidiaAudioFileReader.java:135)的java.sound.sampled.AudioSystem.getAudioInputStream(AudioSystem.java:1111)的java.io.InputStream.reset(InputStream.java:351)中不支持标记/重置我确实使用了这段代码,在MacOSX10.6上编译了它,使用了Java1.5和Java1.6,并运行了它。这两次都奏效了。我还尝试了一个空的WAV文件,只是想看看这是否导致了异常。没有运气;我有一个EOFEException,这是有道理的。您使用的是什么JDK和操作系统?