【发布时间】:2020-09-22 20:50:03
【问题描述】:
谁能告诉我我在这个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)
【问题讨论】:
-
请发布异常堆栈跟踪,或者您希望我们运行此代码:) ??
-
您至少需要发布 what 引发的异常,以及堆栈跟踪中的前十几行。否则,你不会得到太多帮助。
-
java.io.IOException:com.sun.media.sound.SoftMidiAudioFileReader.getAudioInputStream(SoftMidiAudioFileReader.java) 的 java.io.InputStream.reset(InputStream.java:351) 不支持标记/重置:135) 在 javax.sound.sampled.AudioSystem.getAudioInputStream(AudioSystem.java:1111) 在 x.main(x.java:10)
-
我确实采用了这段代码,在 Mac OS X 10.6 上编译它,同时使用 Java 1.5 和 Java 1.6,然后运行它。它两次都有效。我还尝试了一个空的 WAV 文件,只是想看看这是否导致了异常。没运气;我得到了一个 EOFException,这是有道理的。你用的是什么JDK和操作系统?