java声音在jsf页面中播放

标签 java

URL url1 = new URL("http://localhost:8080/COEE/audio/underdog.wav");
AudioStream as = new AudioStream(url1.openStream());
// Create an AudioStream object from the input stream.
//    AudioStream as = new AudioStream(in);         
// Use the static class member "player" from class AudioPlayer to play
// clip.
AudioPlayer.player.start(as);  

当我在本地计算机(Windows 计算机)上玩时,它工作正常。当在Rack Space(云计算)上运行相同的代码时,其中打开jdk6,tomcat,ubuntu就在那里。我认为我们在云计算方面没有健全的驱动程序。我们是否需要云计算中的声音驱动程序才能使用上述代码?我在 jsf 页面中使用上面的代码。当我单击按钮时,它会转到上面的代码并执行它。

javax.faces.FacesException: #{popup.captchaSpeech}: java.lang.NoClassDefFoundError: Could not initialize class org.classpath.icedtea.pulseaudio.EventLoop
    com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:90)
    com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
    com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
    com.icesoft.faces.webapp.http.core.JsfLifecycleExecutor.apply(JsfLifecycleExecutor.java:18)
    com.icesoft.faces.webapp.http.core.ReceiveSendUpdates.renderCycle(ReceiveSendUpdates.java:132)
    com.icesoft.faces.webapp.http.core.ReceiveSendUpdates.service(ReceiveSendUpdates.java:74)
    com.icesoft.faces.webapp.http.core.RequestVerifier.service(RequestVerifier.java:31)
    com.icesoft.faces.webapp.http.common.standard.PathDispatcherServer.service(PathDispatcherServer.java:24)
    com.icesoft.faces.webapp.http.servlet.BasicAdaptingServlet.service(BasicAdaptingServlet.java:16)
    com.icesoft.faces.webapp.http.servlet.PathDispatcher.service(PathDispatcher.java:23)
    com.icesoft.faces.webapp.http.servlet.SessionDispatcher.service(SessionDispatcher.java:53)
    com.icesoft.faces.webapp.http.servlet.SessionVerifier.service(SessionVerifier.java:26)
    com.icesoft.faces.webapp.http.servlet.PathDispatcher.service(PathDispatcher.java:23)
    com.icesoft.faces.webapp.http.servlet.MainServlet.service(MainServlet.java:131)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    com.icesoft.faces.webapp.xmlhttp.BlockingServlet.service(BlockingServlet.java:56)

root cause 

javax.faces.FacesException: #{popup.captchaSpeech}: java.lang.NoClassDefFoundError: Could not initialize class org.classpath.icedtea.pulseaudio.EventLoop
    com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:118)
    javax.faces.component.UICommand.broadcast(UICommand.java:387)
    javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:475)
    javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:756)
    com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:82)
    com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
    com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
    com.icesoft.faces.webapp.http.core.JsfLifecycleExecutor.apply(JsfLifecycleExecutor.java:18)
    com.icesoft.faces.webapp.http.core.ReceiveSendUpdates.renderCycle(ReceiveSendUpdates.java:132)
    com.icesoft.faces.webapp.http.core.ReceiveSendUpdates.service(ReceiveSendUpdates.java:74)
    com.icesoft.faces.webapp.http.core.RequestVerifier.service(RequestVerifier.java:31)
    com.icesoft.faces.webapp.http.common.standard.PathDispatcherServer.service(PathDispatcherServer.java:24)
    com.icesoft.faces.webapp.http.servlet.BasicAdaptingServlet.service(BasicAdaptingServlet.java:16)
    com.icesoft.faces.webapp.http.servlet.PathDispatcher.service(PathDispatcher.java:23)
    com.icesoft.faces.webapp.http.servlet.SessionDispatcher.service(SessionDispatcher.java:53)
    com.icesoft.faces.webapp.http.servlet.SessionVerifier.service(SessionVerifier.java:26)
    com.icesoft.faces.webapp.http.servlet.PathDispatcher.service(PathDispatcher.java:23)
    com.icesoft.faces.webapp.http.servlet.MainServlet.service(MainServlet.java:131)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    com.icesoft.faces.webapp.xmlhttp.BlockingServlet.service(BlockingServlet.java:56)

root cause 

javax.faces.el.EvaluationException: java.lang.NoClassDefFoundError: Could not initialize class org.classpath.icedtea.pulseaudio.EventLoop
    javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:102)
    com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
    javax.faces.component.UICommand.broadcast(UICommand.java:387)
    javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:475)
    javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:756)
    com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:82)
    com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
    com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
    com.icesoft.faces.webapp.http.core.JsfLifecycleExecutor.apply(JsfLifecycleExecutor.java:18)
    com.icesoft.faces.webapp.http.core.ReceiveSendUpdates.renderCycle(ReceiveSendUpdates.java:132)
    com.icesoft.faces.webapp.http.core.ReceiveSendUpdates.service(ReceiveSendUpdates.java:74)
    com.icesoft.faces.webapp.http.core.RequestVerifier.service(RequestVerifier.java:31)
    com.icesoft.faces.webapp.http.common.standard.PathDispatcherServer.service(PathDispatcherServer.java:24)
    com.icesoft.faces.webapp.http.servlet.BasicAdaptingServlet.service(BasicAdaptingServlet.java:16)
    com.icesoft.faces.webapp.http.servlet.PathDispatcher.service(PathDispatcher.java:23)
    com.icesoft.faces.webapp.http.servlet.SessionDispatcher.service(SessionDispatcher.java:53)
    com.icesoft.faces.webapp.http.servlet.SessionVerifier.service(SessionVerifier.java:26)
    com.icesoft.faces.webapp.http.servlet.PathDispatcher.service(PathDispatcher.java:23)
    com.icesoft.faces.webapp.http.servlet.MainServlet.service(MainServlet.java:131)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    com.icesoft.faces.webapp.xmlhttp.BlockingServlet.service(BlockingServlet.java:56)

root cause 

java.lang.NoClassDefFoundError: Could not initialize class org.classpath.icedtea.pulseaudio.EventLoop
    org.classpath.icedtea.pulseaudio.PulseAudioMixer.openImpl(PulseAudioMixer.java:654)
    org.classpath.icedtea.pulseaudio.PulseAudioMixer.openLocal(PulseAudioMixer.java:588)
    org.classpath.icedtea.pulseaudio.PulseAudioMixer.openLocal(PulseAudioMixer.java:584)
    org.classpath.icedtea.pulseaudio.PulseAudioMixer.open(PulseAudioMixer.java:579)
    org.classpath.icedtea.pulseaudio.PulseAudioDataLine.open(PulseAudioDataLine.java:95)
    org.classpath.icedtea.pulseaudio.PulseAudioSourceDataLine.open(PulseAudioSourceDataLine.java:75)
    org.classpath.icedtea.pulseaudio.PulseAudioSourceDataLine.open(PulseAudioSourceDataLine.java:90)
    com.sun.media.sound.DataPusher.start(DataPusher.java:99)
    com.sun.media.sound.DataPusher.start(DataPusher.java:83)
    sun.audio.AudioDevice.startSampled(AudioDevice.java:122)
    sun.audio.AudioDevice.openChannel(AudioDevice.java:194)
    sun.audio.AudioPlayer.start(AudioPlayer.java:140)
    com.highmark.coee.managedbean.PopupBean.captchaSpeech(PopupBean.java:404)
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    java.lang.reflect.Method.invoke(Method.java:616)
    org.apache.el.parser.AstValue.invoke(AstValue.java:172)
    org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276)
    com.sun.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:68)
    javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:88)
    com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
    javax.faces.component.UICommand.broadcast(UICommand.java:387)
    javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:475)
    javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:756)
    com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:82)
    com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
    com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
    com.icesoft.faces.webapp.http.core.JsfLifecycleExecutor.apply(JsfLifecycleExecutor.java:18)
    com.icesoft.faces.webapp.http.core.ReceiveSendUpdates.renderCycle(ReceiveSendUpdates.java:132)
    com.icesoft.faces.webapp.http.core.ReceiveSendUpdates.service(ReceiveSendUpdates.java:74)
    com.icesoft.faces.webapp.http.core.RequestVerifier.service(RequestVerifier.java:31)
    com.icesoft.faces.webapp.http.common.standard.PathDispatcherServer.service(PathDispatcherServer.java:24)
    com.icesoft.faces.webapp.http.servlet.BasicAdaptingServlet.service(BasicAdaptingServlet.java:16)
    com.icesoft.faces.webapp.http.servlet.PathDispatcher.service(PathDispatcher.java:23)
    com.icesoft.faces.webapp.http.servlet.SessionDispatcher.service(SessionDispatcher.java:53)
    com.icesoft.faces.webapp.http.servlet.SessionVerifier.service(SessionVerifier.java:26)
    com.icesoft.faces.webapp.http.servlet.PathDispatcher.service(PathDispatcher.java:23)
    com.icesoft.faces.webapp.http.servlet.MainServlet.service(MainServlet.java:131)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    com.icesoft.faces.webapp.xmlhttp.BlockingServlet.service(BlockingServlet.java:56)a

最佳答案

这里对“服务器端”和“客户端”存在一个重大误解。

AudioPlayer.player.start(as);  

这会在执行这段代码的机器上运行声音。因此,网络服务器。在您的本地开发环境中,网络浏览器和网络服务器在物理上运行在同一台计算机上,因此看起来就像您的网络浏览器正在播放声音一样。但这不是真的,这是网络服务器做的!现在,当您将 Web 应用程序发布到云中时,云服务器会在您执行该应用程序时播放声音。

您想在网络浏览器中播放声音。您可以使用 HTML <embed><object>为了这。另请参阅this tutorial/reference 。以下是经过修改以适合您的 WAV 文件位置的相关摘录:

<object classid="clsid:22D6F312-B0F6-11D0-94AB-0080C74C7E95">
    <param name="FileName" value="/COEE/audio/underdog.wav" />
</object> 

关于java声音在jsf页面中播放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5274645/

相关文章:

内存中异常的 Java 大小

java - 用于比较两个 Mat 时 countNonZero 出错

java - 我什么时候应该宣布 “throws”,什么时候不宣布? [复制]

java - Univocity - 如何将 3(n) 行解析为一行(bean)

java - 当 JavaFX 中的整个 Pane 发生变化时,我应该有各种 FXML 文件吗?

java finalize方法的使用

java - SQL group by 替换不同的值

java - 使用不同的线程迭代 ConcurrentSkipListSet 删除元素

java - 在 Java 中从 String 转换为 JSONArray 或 JSONObject

java - 在 Executor Service 的 ThreadPool 中添加线程