Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
音频流在运行时不会播放,仅在调试期间播放。JAVA_Java_Audio_Sync - Fatal编程技术网

音频流在运行时不会播放,仅在调试期间播放。JAVA

音频流在运行时不会播放,仅在调试期间播放。JAVA,java,audio,sync,Java,Audio,Sync,更新: 音频未完全播放,因为调用它的main()正在结束!如何确保在调用该文件的main()关闭之前播放该文件? 我是编程新手,了解基本知识。我只是为了爱好而学习JAVA。没有正式的爪哇教育 当我运行调用下面这个例程的java类时,没有播放音频。当我在调试模式下,在例程的某个地方放一个中断符时,我恢复调试器,存储在字节数组中的wave文件将播放 我没有线程被编程到另一个调用这个的类中。字节数组波形文件由另一个类构造并发送到此例程中 我假设这个问题是由创建wave文件的类无法在调用playByte

更新:

音频未完全播放,因为调用它的main()正在结束!如何确保在调用该文件的main()关闭之前播放该文件?

我是编程新手,了解基本知识。我只是为了爱好而学习JAVA。没有正式的爪哇教育

当我运行调用下面这个例程的java类时,没有播放音频。当我在调试模式下,在例程的某个地方放一个中断符时,我恢复调试器,存储在字节数组中的wave文件将播放

我没有线程被编程到另一个调用这个的类中。字节数组波形文件由另一个类构造并发送到此例程中

我假设这个问题是由创建wave文件的类无法在调用playByteWaveAudio时及时完成它引起的

此例程是否需要等待字节数组完成?如何确保字节数组播放?

这是java代码,它给了我一个问题:

public class PlayByteWaveAudio {

public PlayByteWaveAudio() {
    System.err.println("Need Byte Array with wave file data! ");
}

public PlayByteWaveAudio(byte[] playWave) {

        InputStream byteArray = new ByteArrayInputStream(playWave);

        try {
            AudioInputStream ais = AudioSystem.getAudioInputStream(byteArray);
            Clip clip = AudioSystem.getClip();

            clip.open(ais);
              //if I have a breakpoint in this area, during DEBUG, i can continue
              //and the wave byte array will play just fine.
              //During regular run(without debug), there is no sound.
            clip.start();
            clip.flush();
        } catch (IOException | LineUnavailableException | UnsupportedAudioFileException e) {
            System.out.println(e);
        }
    }
}

为什么要创建一个不应该调用的构造函数?如果您在使用带参数的构造函数时忽略了构造函数
public PlayByteWaveAudio()
,则在尝试创建
新的PlayByteWaveAudio()
时会出现编译时错误,而不是运行时错误。我之所以创建它,是因为我对编程不太了解!:)我不会再那样做了。谢谢你指出这一点。