在Redhat 5上运行JavaFX应用程序
从我的经验来看,我知道Redhat5.8不支持JavaFX,这意味着即使我在Linux上安装了Java8(jdk1.8.0_05),在win7中创建的JAR文件也无法通过在Redhat 5上运行JavaFX应用程序,javafx,javafx-8,Javafx,Javafx 8,从我的经验来看,我知道Redhat5.8不支持JavaFX,这意味着即使我在Linux上安装了Java8(jdk1.8.0_05),在win7中创建的JAR文件也无法通过Java-JAR helloworld.JAR执行。这是否意味着无法在此计算机上运行JavaFX JAR?在RHEL5上运行JavaFX应用程序的问题是,随操作系统附带的glib版本不够新。因此,诀窍是向JRE提供该库和所有依赖它的其他库的更新版本。下一个障碍是RHEL5共享库加载器不会加载这些库。您必须使用兼容的加载程序。但是
Java-JAR helloworld.JAR
执行。这是否意味着无法在此计算机上运行JavaFX JAR?在RHEL5上运行JavaFX应用程序的问题是,随操作系统附带的glib版本不够新。因此,诀窍是向JRE提供该库和所有依赖它的其他库的更新版本。下一个障碍是RHEL5共享库加载器不会加载这些库。您必须使用兼容的加载程序。但是JVM有到加载程序的路径在可执行文件中硬编码!因此,您需要一个单独的JVM,并在其中修补自定义加载程序路径。大致来说,让它工作的步骤是
- 油嘴滑舌
- 利菲
- 格利伯
- 通用glibc
- 兹利布
- gtk2
- 盘古
- 开罗
- 皮克斯曼
/YOUR-ALIEN-RHEL6-LIBS-PATH
/YOUR-ALIEN-JVM-PATH
/usr/bin/patchelf--set解释器/YOUR-ALIEN-RHEL6-LIBS-PATH/lib/amd64/ld-linux-x86-64.so.2/YOUR-ALIEN-JVM-PATH/jre1.8.0_25/bin/java
LD_LIBRARY_PATH=/YOUR-ALIEN-RHEL6-LIBS-PATH/lib/amd64:/YOUR-ALIEN-RHEL6-LIBS-PATH/lib/amd64/jli后运行应用程序
虽然它并不漂亮,但我已经使用此方法成功地在RHEL5上运行了JavaFX应用程序。话虽如此,我强烈建议升级你的操作系统,如果它是远程可行的。注意,这是基于James的现有答案,并提供了更具体的细节 从RedHat 6.x获取RPM,例如。复制到目录
rpms/
cairo-1.8.8-3.1.el6.i686.rpm
glib2-2.22.5-6.el6.i686.rpm
glibc-2.12-1.47.el6.i686.rpm
glibc-common-2.12-1.47.el6.i686.rpm
gtk2-2.18.9-6.el6.centos.i686.rpm
libffi-3.0.5-3.2.el6.i686.rpm
libXcomposite-0.4.1-2.el6.i686.rpm <== not mentioned in other answer
pango-1.28.1-3.el6_0.centos.5.i686.rpm
pixman-0.18.4-1.el6_0.1.i686.rpm
zlib-1.2.3-27.el6.i686.rpm
libXdamage-1.1.2-1.el6.i686.rpm <== not mentioned in other answer
获取patchelf
的副本。我从源代码构建,因为找不到Redhat 5 RPM。只需要依赖的RPM[gcc,gcc-c++,glibc-devel,内核头,libstdc++-devel]
wget https://nixos.org/releases/patchelf/patchelf-0.9/patchelf-0.9.tar.bz2
tar xjf patchelf-0.9.tar.bz2
cd patchelf-0.9
./configure --prefix /tmp/patchelf
make install
使用patchelf
设置redhat 6u2加载程序(又名解释器)的位置
设置LD\u LIBRARY\u路径
,这需要同时具有/usr/lib
和/lib
,否则会出现segfault
export LD_LIBRARY_PATH=/home/user/redhat-6u2-libs/usr/lib:/home/user/redhat-6u2-libs/lib
(请注意,在设置了LD\u LIBRARY\u PATH
之后运行的任何其他应用程序,都不是已更正解释器位置的java。
现在运行java应用程序
./jdk1.8.0_40/bin/java -cp etc...
快乐时光您唯一的改变就是在这台机器上安装OpenJDK:
yum install java-1.8.0-OpenJDK-devel
。如果您不能,您将不得不升级系统。非常感谢您的回答,您是个天才。这个把戏在我能找到的任何地方都没有记录。希望你不介意,但也回答了更具体,可重复的细节。在我的例子中,我还需要libXcomposite,可能是因为使用prism软件渲染。
export LD_LIBRARY_PATH=/home/user/redhat-6u2-libs/usr/lib:/home/user/redhat-6u2-libs/lib
./jdk1.8.0_40/bin/java -cp etc...