我正在尝试编写一个 Java EE 应用程序来记录来自服务器输入的声音。 我的代码在调试时工作正常,并且在服务器上作为我自己(都是 ubuntu)运行但是当它从网络服务器运行时我得到一个异常:
javax.sound.sampled.LineUnavailableException
at org.classpath.icedtea.pulseaudio.PulseAudioMixer.openImpl(PulseAudioMixer.java:714)
at org.classpath.icedtea.pulseaudio.PulseAudioMixer.openLocal(PulseAudioMixer.java:588)
at org.classpath.icedtea.pulseaudio.PulseAudioMixer.openLocal(PulseAudioMixer.java:584)
at org.classpath.icedtea.pulseaudio.PulseAudioMixer.open(PulseAudioMixer.java:579)
at org.classpath.icedtea.pulseaudio.PulseAudioDataLine.open(PulseAudioDataLine.java:95)
at org.classpath.icedtea.pulseaudio.PulseAudioTargetDataLine.open(PulseAudioTargetDataLine.java:111)
at org.classpath.icedtea.pulseaudio.PulseAudioTargetDataLine.open(PulseAudioTargetDataLine.java:130)
我已经尝试将 tomcat 用户添加到音频组(一些文档建议这样做),但它仍然抛出异常。我认为唯一的区别一定是环境,但我不知道问题出在哪里。
最佳答案
我假设您在 CLASSPATH 中有适当的 JAR - 在您的应用程序 WEB-INF/lib 或在 Tomcat/lib 中。
您尝试打开某些东西的事实表明您可能遇到了路径问题。 Web 应用程序不能依赖绝对文件路径,因为它们不知道 WAR 文件将安装在哪里。所以最好使用相对路径并以流的形式获取资源。也许有一种方法可以用这个库来做到这一点。
关于java - 从 tomcat 使用 JavaSounds,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7046011/