【发布时间】:2014-04-28 21:40:11
【问题描述】:
我们目前在我们的 Linux Redhat 6 环境中使用 JavaFX 的 WebViewer 进行开发时遇到问题。使用 JavaFX 2.2 和 Java 1.7.0.51,我们有一个 WebViewer,它可以转到一个带有视频标签的 HTML 页面。
它在我们的 Windows 机器上完美运行,但在 linux 机器上我们得到以下异常:
Exception in thread "JavaFX Application Thread" java.lang.IllegalThreadStateException
at java.lang.Thread.start(Thread.java:704)
at com.sun.webpane.sg.prism.WCMediaPlayerImpl.prepareToPlay(WCMediaPlayerImpl.java:208)
at com.sun.webpane.platform.graphics.WCMediaPlayer.fwkPrepareToPlay(WCMediaPlayer.java:290)
at com.sun.webpane.platform.WebPage.twkProcessMouseEvent(Native Method)
at com.sun.webpane.platform.WebPage.dispatchMouseEvent(WebPage.java:751)
at javafx.scene.web.WebView.processMouseEvent(WebView.java:983)
at javafx.scene.web.WebView.access$2600(WebView.java:81)
at javafx.scene.web.WebView$14.handle(WebView.java:1136)
at javafx.scene.web.WebView$14.handle(WebView.java:1134)
at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:64)
at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:217)
at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:170)
at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:38)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:37)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:92)
at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:35)
at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:92)
at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:53)
at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:33)
at javafx.event.Event.fireEvent(Event.java:171)
at javafx.scene.Scene$MouseHandler.process(Scene.java:3369)
at javafx.scene.Scene$MouseHandler.process(Scene.java:3209)
at javafx.scene.Scene$MouseHandler.access$1900(Scene.java:3164)
at javafx.scene.Scene.impl_processMouseEvent(Scene.java:1582)
at javafx.scene.Scene$ScenePeerListener.mouseEvent(Scene.java:2267)
at com.sun.javafx.tk.quantum.EmbeddedScene$2$1.run(EmbeddedScene.java:194)
at com.sun.javafx.tk.quantum.EmbeddedScene$2$1.run(EmbeddedScene.java:176)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.javafx.tk.quantum.EmbeddedScene$2.run(EmbeddedScene.java:176)
at com.sun.javafx.application.PlatformImpl$4$1.run(PlatformImpl.java:182)
at com.sun.javafx.application.PlatformImpl$4$1.run(PlatformImpl.java:179)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.javafx.application.PlatformImpl$4.run(PlatformImpl.java:179)
at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:76)
at com.sun.glass.ui.gtk.GtkApplication._runLoop(Native Method)
at com.sun.glass.ui.gtk.GtkApplication$3$1.run(GtkApplication.java:89)
at java.lang.Thread.run(Thread.java:744)
我要说的很明显,当它试图加载视频时,似乎从 JavaFX 产生的线程正在死亡。有没有其他人遇到过这种性质的问题?关于尝试什么的任何想法?我们曾尝试使用非常特定的 H-264 编解码器版本,但没有奏效。关于如何在 JavaFX WebView 中为视频播放设置 linux/javafx 环境的任何想法也会有所帮助。
另外,为了澄清应用程序是带有嵌入式 JavaFX 的 Swing,但它仍然发生在纯 JavaFX 实现中,稍有不同的异常。
谢谢, 内森
更新:看起来我们可能没有正确安装编解码器。明天将更新答案以供将来参考。
【问题讨论】:
-
Red Hat 6 不是 JavaFX 2 支持的配置,但它是 supported configuration for JavaFX in Java 8。试试 Java 8 看看它是否有效。如果没有,请针对 JavaFX 运行时项目提交bug report。
-
现在看来我们没有正确安装编解码器。
标签: java video javafx redhat codec