Building Openjfx on Centos 6.6

David Hill David.Hill at Oracle.com
Fri Jan 2 15:05:17 UTC 2015


On 1/1/15, 12:18 PM, Jens Kapitza wrote:
>
> Am 30.12.2014 um 14:16 schrieb Nick Pratt:
>> Ok, I setup a fresh Ubuntu 12.0.4 server install on a VM (32 bit this time), installed Gradle 1.8, Oracle JDK 1.8u25 (x86 version, removed the existing jfxrt.jar), grabbed all the latest OpenJFX source and Pi/Arm tool chain and rebuilt.  I copied the resulting contents of ./rt/build/armv6hf-sdk/rt over the top of JDK_HOME/jre/ on my Pi, but I'm still hitting a link error when running a JavaFX app:
>>
> I've testet this some days ago;
>
> you have to remove some more jars.
>
> ||
> |rm| |-f $JAVA_HOME||/jre/lib/ext/jfx||*jar $JAVA_HOME||/jre/lib/arm/libjavafx_font_t2k||.so|

This was added to to wiki this week as I worked to figure out what was happening.

https://wiki.openjdk.java.net/display/OpenJFX/Cross+Building+for+ARM+Hard+Float

Also added, on the Pi we need you to use 'sudo java ...' because of the permissions of udev and the devices that we need to read.

Dave
>
>  https://wiki.openjdk.java.net/display/OpenJFX/Cross+Building+for+ARM+Hard+Float
>>
>> pi at raspberrypi ~ $ java -jar JavaFXApp.jar
>>
>> Exception in thread "main" java.lang.reflect.InvocationTargetException
>>
>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>
>> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>>
>> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>>
>> at java.lang.reflect.Method.invoke(Method.java:483)
>>
>> at sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:767)
>>
>> Caused by: java.lang.RuntimeException: java.lang.UnsatisfiedLinkError: com.sun.glass.ui.monocle.linux.Udev._open()J
>>
>> at com.sun.javafx.tk.quantum.QuantumToolkit.startup(QuantumToolkit.java:296)
>>
>> at com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:216)
>>
>> at com.sun.javafx.application.LauncherImpl.startToolkit(LauncherImpl.java:653)
>>
>> at com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:314)
>>
>> at com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:305)
>>
>> ... 5 more
>>
>> Caused by: java.lang.UnsatisfiedLinkError: com.sun.glass.ui.monocle.linux.Udev._open()J
>>
>> at com.sun.glass.ui.monocle.linux.Udev._open(Native Method)
>>
>> at com.sun.glass.ui.monocle.linux.Udev.<init>(Udev.java:68)
>>
>> at com.sun.glass.ui.monocle.linux.Udev.getInstance(Udev.java:54)
>>
>> at com.sun.glass.ui.monocle.linux.LinuxInputDeviceRegistry.<init>(LinuxInputDeviceRegistry.java:77)
>>
>> at com.sun.glass.ui.monocle.linux.LinuxPlatform.createInputDeviceRegistry(LinuxPlatform.java:19)
>>
>> at com.sun.glass.ui.monocle.NativePlatform.getInputDeviceRegistry(NativePlatform.java:58)
>>
>> at com.sun.glass.ui.monocle.MonocleApplication.<init>(MonocleApplication.java:78)
>>
>> at com.sun.glass.ui.monocle.MonoclePlatformFactory.createApplication(MonoclePlatformFactory.java:45)
>>
>> at com.sun.glass.ui.Application.run(Application.java:145)
>>
>> at com.sun.javafx.tk.quantum.QuantumToolkit.startup(QuantumToolkit.java:281)
>>
>> ... 9 more
>>
>> pi at raspberrypi~ $which java
>>
>> /opt/java/bin/java
>>
>>
>> I look at a couple of libs within the ./jre/lib/arm folder (one I replaced, one original):
>>
>> pi at raspberrypi/opt/java/jre/lib/arm $file libjava.so
>>
>> libjava.so: ELF 32-bit LSB shared object, ARM, version 1 (SYSV), dynamically linked, BuildID[sha1]=0x85ac21c4b5e873e5ed15d80b0e64fb4c38122e8f, not stripped
>>
>> pi at raspberrypi /opt/java/jre/lib/arm $ file libjavafx_iio.so
>>
>> libjavafx_iio.so: ELF 32-bit LSB shared object, ARM, version 1 (SYSV), dynamically linked, BuildID[sha1]=0xd4b0794ac7451d58e5bf2ab6d8c856b2aa0005e5, not stripped
>>
>>
>> So the latter looks correct (the former was supplied by Oracle)
>>
>> My C knowledge is extremely rusty (like 15 years old), and that was mostly on MS Windows - how do I check which shared lib contains the com.sun.glass.ui.monocle.linux.Udev._open()J  method?
>>
>> Perhaps this is a gcc/link problem - did I use a different version of the compiler than I was supposed to and my version has mangled things differently, or did I install all the .so files in the wrong place (I put them all in /opt/java/jre/lib/arm):
>>
>> pi at raspberrypi /opt/java/jre/lib/arm $ ls -la | grep "Dec 30"
>>
>> drwxr-xr-x 12 pi pi     4096 Dec 30 07:46 ..
>>
>> -rwxrwxr-x  1 pi pi    61200 Dec 30 07:54 libdecora_sse.so
>>
>> -rwxr-xr-x  1 pi pi   134489 Dec 30 07:54 libfxplugins.so
>>
>> -rwxrwxr-x  1 pi pi    31428 Dec 30 07:54 libglass_monocle.so
>>
>> -rwxrwxr-x  1 pi pi    15946 Dec 30 07:54 libglass_monocle_x11.so
>>
>> -rwxrwxr-x  1 pi pi   193850 Dec 30 07:54 libglass.so
>>
>> -rwxr-xr-x  1 pi pi  1530711 Dec 30 07:54 libgstreamer-lite.so
>>
>> -rwxrwxr-x  1 pi pi    23301 Dec 30 07:54 libjavafx_font_freetype.so
>>
>> -rwxrwxr-x  1 pi pi    20564 Dec 30 07:54 libjavafx_font_pango.so
>>
>> -rwxrwxr-x  1 pi pi    14950 Dec 30 07:54 libjavafx_font.so
>>
>> -rwxrwxr-x  1 pi pi   218614 Dec 30 07:54 libjavafx_iio.so
>>
>> -rwxr-xr-x  1 pi pi   224345 Dec 30 07:54 libjfxmedia.so
>>
>> -rwxr-xr-x  1 pi pi 30879536 Dec 30 07:54 libjfxwebkit.so
>>
>> -rwxrwxr-x  1 pi pi    42591 Dec 30 07:54 libprism_common.so
>>
>> -rwxrwxr-x  1 pi pi    59640 Dec 30 07:54 libprism_es2_eglfb.so
>>
>> -rwxrwxr-x  1 pi pi    54149 Dec 30 07:54 libprism_es2_monocle.so
>>
>> -rwxrwxr-x  1 pi pi    56508 Dec 30 07:54 libprism_sw.so
>>
>>
>> *Compile machine (Ubuntu 12 ISO):*
>>
>> @ubuntu:~/work/rt/build/armv6hf-sdk/rt$ uname -a
>>
>> Linux ubuntu 3.13.0-43-generic #72~precise1-Ubuntu SMP Tue Dec 9 12:14:42 UTC 2014 i686 i686 i386 GNU/Linux
>>
>> @ubuntu:~/work/rt/build/armv6hf-sdk/rt$ gcc --version
>>
>> gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3
>>
>> @ubuntu:~/work/rt/build/armv6hf-sdk/rt$ lsb_release -a
>>
>> No LSB modules are available.
>>
>> Distributor ID:Ubuntu
>>
>> Description:Ubuntu 12.04.5 LTS
>>
>> Release:12.04
>>
>> Codename:precise
>>
>>
>> On Tue, Dec 30, 2014 at 6:40 AM, Jens Kapitza <j.kapitza at schwarze-allianz.de <mailto:j.kapitza at schwarze-allianz.de>> wrote:
>>
>>     Hi Nick,
>>
>>     i've read you found a solution, i had the same Problem (linux.grandle)
>>
>>     in build folder there were some empty build files. as far as i can
>>     remember linux_tools....
>>     the script tries to find cflags and linker options but there is an
>>     empty file (i've just deleted this file, clean rebuild works)
>>
>>
>>     the error with grandle 1.8 was behind this line 78 ^^
>>
>>
>>
>>     for the link errors; have you copied the libs (.so)  files into
>>     your openjdk build (after the build there is a sdk folder with
>>     libs and jar)
>>
>>     the so file have to be in the openjdk lib folder or (i think
>>     should work somewhere below /usr/lib
>>
>>
>>     --
>>     Jens Kapitza
>>
>>     Am 29.12.2014 um 01:35 schrieb Nick Pratt:
>>
>>         Does anyone have any tips on getting Openjfx (latest source as of
>>         2014-12-28 19:00 EST) to build on a Centos 6.6 box?
>>
>>         Im following the wiki for Linux builds and grabbed Gradle 1.8
>>         (does the
>>         latest 2.2 work?) but Im failing to build with the following
>>         error:
>>
>>         [work at nyprod1 rt]# /opt/gradle/bin/gradle
>>
>>         :buildSrc:generateGrammarSource UP-TO-DATE
>>
>>         :buildSrc:compileJava UP-TO-DATE
>>
>>         :buildSrc:compileGroovy UP-TO-DATE
>>
>>         :buildSrc:processResources UP-TO-DATE
>>
>>         :buildSrc:classes UP-TO-DATE
>>
>>         :buildSrc:jar UP-TO-DATE
>>
>>         :buildSrc:assemble UP-TO-DATE
>>
>>         :buildSrc:compileTestJava UP-TO-DATE
>>
>>         :buildSrc:compileTestGroovy UP-TO-DATE
>>
>>         :buildSrc:processTestResources UP-TO-DATE
>>
>>         :buildSrc:testClasses UP-TO-DATE
>>
>>         :buildSrc:test UP-TO-DATE
>>
>>         :buildSrc:check UP-TO-DATE
>>
>>         :buildSrc:build UP-TO-DATE
>>
>>
>>         FAILURE: Build failed with an exception.
>>
>>
>>         * Where:
>>
>>         Script '/work/WorkingCopies/rt/buildSrc/linux.gradle' line: 78
>>
>>
>>         * What went wrong:
>>
>>         A problem occurred evaluating script.
>>
>>             Cannot invoke method split() on null object
>>
>>
>>         * Try:
>>
>>         Run with --stacktrace option to get the stack trace. Run with
>>         --info or
>>         --debug option to get more log output.
>>
>>
>>         BUILD FAILED
>>
>>
>>         Total time: 8.96 secs
>>
>>
>>         If anyone has any tips or suggestions to get this compiling on
>>         Centos 6.x
>>         they would be most appreciated.
>>
>>
>>
>


-- 
David Hill<David.Hill at Oracle.com>
Java Embedded Development

"A man's feet should be planted in his country, but his eyes should survey the world."
-- George Santayana (1863 - 1952)



More information about the openjfx-dev mailing list