0

我正在尝试编写一个 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 用户添加到音频组(一些文档建议),但它仍然抛出异常。我认为唯一的区别一定是环境,但我不知道问题出在哪里。

4

2 回答 2

0

我假设您在 CLASSPATH 中有适当的 JAR - 在您的应用程序 WEB-INF/lib 或 Tomcat /lib 中。

您试图打开某些东西的事实表明您可能遇到了路径问题。Web 应用程序不能依赖绝对文件路径,因为它们不知道 WAR 文件将安装在哪里。所以最好使用相对路径并以流的形式获取资源。也许有一种方法可以用这个库来做到这一点。

于 2011-08-12T20:40:23.003 回答
0

我已经设法让这个工作现在 - 但感谢您的帮助。

最后这是一个操作系统级别的问题,在 ubuntu 下,只有音频组中的用户可以在未登录时访问声音资源(https://wiki.ubuntu.com/Audio/TheAudioGroup)并连接到看起来像的脉冲音频您需要某种 X11 身份验证。在这些更改之后,它需要重新启动,以便 tomcat 可以在其他任何操作之前获取声音设备。

于 2011-08-13T09:27:56.167 回答