Очень странно! Я поместил три аудиофайла: audio1.wav, audio2.wav, audio3.wav и Test11. java в один каталог. Каждый из аудио файлов играет хорошо, когда я просто нажимаю на него в каталоге. Когда я выполняю Test11. java, помещая audio1.wav в качестве inputStream, audio1.wav (не настоящий audio1.wav; его содержимое на самом деле audio3.wav; еще одна странная вещь!) Воспроизводит и выводит «false», поскольку ни audio2, ни audio3 не существует. Но когда я помещаю в качестве inputStream либо audio2.wav, либо audio3.wav, ни одна из них не воспроизводится, также появляются ошибки «false java .lang.NullPointerException» и «java .lang.NullPointerException». Test11. java указан ниже:
import java.io.*;
import java.io.IOException;
import javax.sound.sampled.*;
class AudioTest {
public void AudioPlay() {
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
try{
Clip clip = AudioSystem.getClip();
File f = new File("audio3.wav"); //or alternatively "audio2.wav"
System.out.print(f.exists());// It will print out "false" if the file is checked not
exiting.
AudioInputStream inputStream =
AudioSystem.getAudioInputStream(classLoader.getResourceAsStream("audio2.wav"));
clip.open(inputStream);
clip.start();
while (!clip.isRunning())
Thread.sleep(10);
while (clip.isRunning())
Thread.sleep(10);
clip.close();
} catch (Exception e)
{
e.printStackTrace();
System.out.println(e);
}
}
}
public class Test11 {
public static void main(String[] args) throws IOException
{
AudioTest au1 = new AudioTest();
au1.AudioPlay();
}
}
Ниже приведено сообщение об ошибке: false java .lang.NullPointerException java .lang.NullPointerException на com.sun.media.sound.SoftMidiAudioFileReader .getAudioInputStream (SoftMidiAudioFileReader. java: 134) в javax.sound.sampled.AudioSystem.getAudioInputStream (AudioSystem. java: 1113) в AudioTest.AudioPlay (Test11. java: 15) в Test11.main (Test11. java: 37)