2015-04-28 1 views
0

Так что этот класс воспроизводит звуковой файл «Theme A.wav» просто отлично, когда он запускается сам по себе.Звук Java отлично воспроизводится при запуске в одиночку, а не при прохождении через отдельный класс

Это «PlayAudio.class»

import java.io.*; 
import sun.audio.*; 

public class PlayAudio { 

public static playsound() { 

    String sound = "Theme A.wav"; 

    InputStream audio = new FileInputStream(new File(sound)); 
    AudioStream aStream = new AudioStream(audio); 
    AudioPlayer.player.start(aStream); 

    System.out.println("Loaded playaudio.class; playing audio"); 


} 
public static void main(String args[]) { 

new playsound(); 

} 
} 

Однако кнопка воспроизведения находится в главном классе, не может вызвать «playaudio.class при нажатии. Он отлично работал, прежде чем я добавил звуковой код (все, кроме «System.out.println» («Загруженный проигрыватель воспроизведения, проигрывание аудио»), строка «). Ошибка не отображалась до тех пор, пока в первый класс не будет добавлен фрагмент «throws Exception».

//play button 
play = new JButton(new ImageIcon ("UIImages/play.png")); 
play.setBackground(Color.WHITE); 
play.setFocusPainted(false); 

//sets up the action play 
play.addActionListener(new ActionListener() { 
    public void actionPerformed(ActionEvent evt) { 

     PlayAudio.playsound(); 

    } 
    }); 

Любая помощь? Это исключение, которое генерирует компилятор.

1 error found: 
File: C:\Users\Hunter\workspace\src\rejomedia.java [line: 74] 
Error: Unhandled exception type java.lang.Exception 
+0

И что такое исключение? – JamesB

+0

Добавлен к вопросу. – LeZayta

+0

Если вы не возражаете против нескольких предложений: вы должны назвать свой класс playaudio PlayAudio - занятия начинаются с таких столиц, методы начинаются с нижнего регистра (так что «главное» правильно). # 2 у вас есть ошибка сборки, а не исключение. Исключения выполняются только при запуске программы (java), а не ее компиляции (javac). # 3, извлеките этот код из основного и поместите его в другой метод, например «playSound», затем попросите главного и обработчика событий «playSound», который кажется намного лучше, чем вызов «main» напрямую. –

ответ

1

Положите Try/Catch вокруг playaudio.main (null) или внутри основного (вместо метания).

Звонок playaudio.main() выкинет в прослушиватель событий событий и, вероятно, будет спокойно съеден. Тихие исключения - это самое худшее, что вы можете иметь в Java-коде.

Моя догадка это бросает, потому что он не может найти файл любой больше (Возможно «» каталог перемещен, потому что вы начинаете по-другому, или с помощью другой основной)

Если это так, то один путь к «Исправить» - это обеспечить полный путь.

Если вы видите исключение, добавьте его в свой пост, и мы можем помочь вам.

Got it. Это ошибка сборки. Когда вы «выбрасываете» свое исключение из своей основной, вы не обрабатываете его в методе, который вызывает ваш основной.

То же решение, что и я выше. Оберните вызов на главный в попытке/уловить:

try { 
    playaudio.main(null); 
} catch(Exception e) { 
    System.out.println("Caught an exception:"+ e.getMessage()); 
    e.printStackTrace(); 
} 
+0

добавил исключение. – LeZayta

+0

вместо 'System.out.println («Попал в исключение:», e.getMessage()); это «System.out.println (« Пойманное исключение: »+ e.getMessage()); что, похоже, сделал трюк! : D – LeZayta

 Смежные вопросы

  • Нет связанных вопросов^_^