Schaich: wav-Wiedergabe

Hey,

Das is wahrscheinlich eine dumme Frage aber ich komm einfach nich dahinter.
Ich versuche eine wav-Datei nach einem Countdown wiederzugeben.

Ich habe also einen Thread programmiert, der eine bestimmte Zeit runterzählt und nachdem dieser fertig ist soll dann die wav-Datei laufen.

Ich habe das abspielen in eine Methode "play()" geschrieben.
Als Fehlermeldung kommt immer

  
Stopuhr.java:99:17: unreported exception java.io.IOException; must be caught or declared to be thrown  

Wenn ich in den Kopf der Methode

  
throws IOException, UnsupportedAudioFileException, LineUnavailableException  

reinschreibe ändert sich nichts.

Hier mal die ganze Methode:

  
public void play(String path)  
throws IOException, UnsupportedAudioFileException, LineUnavailableException{  
  
      File soundFile = new File(path);  
  
      AudioInputStream sound = AudioSystem.getAudioInputStream(soundFile);  
      DataLine.Info info = new DataLine.Info(Clip.class,sound.getFormat());  
      Clip clip = (Clip)AudioSystem.getLine(info);  
      clip.open(sound);  
  
       clip.addLineListener(new LineListener() {  
            public void update(LineEvent event) {  
                if (event.getType() == LineEvent.Type.STOP) {  
                    event.getLine().close();  
                    System.exit(0);  
                }  
            }  
       });  
  
  }  

Danke schonmal
MfG Schaich

  1. Hallo Schaich,

    Der Fehler liegt vermutlich in der update-Methode da close vermutlich die IOException wirft:

      
    public void update(LineEvent event) {  
      if (event.getType() == LineEvent.Type.STOP) {  
        try {  
          event.getLine().close();  
        } catch (IOException e) {  
          throw new RuntimeException(e);  
        }  
        System.exit(0);  
      }  
    }  
    
    

    Ein Programm irgendwo mitten drin mit "System.exit(0)" abzuschießen, ist übrigens meist kein besonders guter Stil. Außerhalb der Klasse mit der main-Methode sollte man die Funktion am Besten nie aufrufen, da man sonst irgendwo in einem Modul der Anwendung deren Gesammtverhalten steuert.

    Abgesehen davon bist Du wohl turgar...

    Grüße

    Daniel