【问题标题】:Error when launching Java FX application on a headless Linux RedHat system在无头 Linux RedHat 系统上启动 Java FX 应用程序时出错
【发布时间】:2014-03-06 15:35:31
【问题描述】:

尝试使用 X 在 Linux 系统上启动 java FX 应用程序。我得到以下堆栈跟踪。经过一堆谷歌搜索和安装各种软件包后,我不知所措。有什么想法吗?

java -jar tacoma_testing.jar 
Prism-ES2 Error : GL_VERSION (major.minor) = 1.4
java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at com.javafx.main.Main.launchApp(Main.java:698)
    at com.javafx.main.Main.main(Main.java:871)
Caused by: java.lang.RuntimeException: java.lang.UnsatisfiedLinkError: /projects/tacoma/tacoma_regression_testing/jdk1.7.0_25/jre/lib/amd64/libglass.so: libgio-2.0.so.0: cannot open shared object file: No such file or directory
    at com.sun.javafx.tk.quantum.QuantumToolkit.startup(QuantumToolkit.java:281)
    at com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:124)
    at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:163)
    at com.sun.javafx.application.LauncherImpl.access$000(LauncherImpl.java:47)
    at com.sun.javafx.application.LauncherImpl$1.run(LauncherImpl.java:115)
    at java.lang.Thread.run(Thread.java:724)
Caused by: java.lang.UnsatisfiedLinkError: /projects/tacoma/tacoma_regression_testing/jdk1.7.0_25/jre/lib/amd64/libglass.so: libgio-2.0.so.0: cannot open shared object file: No such file or directory
    at java.lang.ClassLoader$NativeLibrary.load(Native Method)
    at java.lang.ClassLoader.loadLibrary1(ClassLoader.java:1957)
    at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1882)
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1843)
    at java.lang.Runtime.load0(Runtime.java:795)
    at java.lang.System.load(System.java:1061)
    at com.sun.glass.utils.NativeLibLoader.loadLibraryFullPath(NativeLibLoader.java:200)
    at com.sun.glass.utils.NativeLibLoader.loadLibraryInternal(NativeLibLoader.java:88)
    at com.sun.glass.utils.NativeLibLoader.loadLibrary(NativeLibLoader.java:31)
    at com.sun.glass.ui.Application.loadNativeLibrary(Application.java:73)
    at com.sun.glass.ui.Application.loadNativeLibrary(Application.java:80)
    at com.sun.glass.ui.gtk.GtkPlatformFactory$1.run(GtkPlatformFactory.java:28)
    at com.sun.glass.ui.gtk.GtkPlatformFactory$1.run(GtkPlatformFactory.java:25)
    at java.security.AccessController.doPrivileged(Native Method)
    at com.sun.glass.ui.gtk.GtkPlatformFactory.<clinit>(GtkPlatformFactory.java:25)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:190)
    at com.sun.glass.ui.PlatformFactory.getPlatformFactory(PlatformFactory.java:20)
    at com.sun.glass.ui.Application.Run(Application.java:103)
    at com.sun.javafx.tk.quantum.QuantumToolkit.startup(QuantumToolkit.java:271)
    ... 5 more

【问题讨论】:

  • 您有一个主要-次要错误,即您正在使用的 jar 是用您当前正在使用的不同 JRE 版本编译的!

标签: java linux javafx rhel


【解决方案1】:

对于 JavaFX 2.2,Redhat 未列为 supported configuration。 也不是在无头模式下运行 JavaFX。

这对于 Java 8 可能会有所改变,但 Java 8 尚未发布,因此在 Java 8 上运行的 JavaFX 支持的配置列表尚未发布。

目前仅支持 Linux 的配​​置集 => Ubuntu 10.4+ gtk2 2.18+ 如果您还需要媒体播放支持,则对 av 编解码器有可选的附加要求。

所以尝试使用受支持的 Ubuntu 系统而不是 Redhat,您可能会也可能不会在无头环境中使用它。

我测试过,它在 Redhat 6 上运行良好。Redhat 5 似乎是问题所在。

将为 Java 8 添加对 Redhat Enterprise Linux 6 的支持(将在未来几周内发布)。

一个 RHEL 5.5 支持请求因无法修复而关闭,请参阅 RT-22564 "JavaFX Support for Red Hat Enterprise Linux 5.5"

如果您能找到在 RHEL 5 上安装 gtk2 2.18+ 的方法,您也许可以让它工作,尽管没有承诺。

【讨论】:

  • 我测试过,它在 Redhat 6 上运行良好。Redhat 5 似乎是问题所在。不幸的是,我的客户是一家大公司,变化很慢。所以我要么必须说服他们有一个更新的盒子来支持这个应用程序,要么将整个东西移植到 AWT。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-14
  • 2015-10-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多